본문 바로가기
프로그래밍

[Ubuntu] MariaDB 사용자 생성, 권한 부여, 포트 연결

by 개발자신입 2024. 6. 9.
반응형

# 환경

  • ubuntu
  • Oracle Cloud
  • MariaDB (HediSQL)

외부 접속 가능 User 생성

1. 데이터베이스 접속

mysql -u root -p

2. 유저 생성

// 생성
CREATE USER '유저이름'@'%' IDENTIFIED BY '비번';

// 권한 부여
GRANT ALL PRIVILEGES ON mydatabase.* TO '유저이름'@'%';

// 설정 적용
FLUSH PRIVILEGES;

3. 3306 포트 열기

데이터베이스 연결 끊고, sudo 명령어로 포트를 열어준다.

sudo iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

4. SSH 연결

파워쉘에서 명령어로 연결해준다.

공용 ip는 클라우드에서 생성해야함.

ssh -i 파일명.key ubuntu@공용ip

5. 클라우드에서 3306 포트에 대한 수신 규칙 추가 

6. DB 연결

 

 


 

 

# 에러 내용 

@DESKTOP-U42L5N8:~$ sudo systemctl status mariadb
× mariadb.service - LSB: Start and stop the mysql database server daemon
     Loaded: loaded (/etc/init.d/mariadb; generated)
     Active: failed (Result: exit-code) since Sun 2024-06-09 16:57:41 KST; 23s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 19430 ExecStart=/etc/init.d/mariadb start (code=exited, status=1/FAI>

Jun 09 16:57:11 DESKTOP-U42L5N8 systemd[1]: Starting LSB: Start and stop the mysq>
Jun 09 16:57:11 DESKTOP-U42L5N8 mariadb[19430]:  * Starting MariaDB database serv>
Jun 09 16:57:41 DESKTOP-U42L5N8 mariadb[19430]:    ...fail!
Jun 09 16:57:41 DESKTOP-U42L5N8 systemd[1]: mariadb.service: Control process exit>
Jun 09 16:57:41 DESKTOP-U42L5N8 systemd[1]: mariadb.service: Failed with result '>
Jun 09 16:57:41 DESKTOP-U42L5N8 systemd[1]: Failed to start LSB: Start and stop t>

 

해결 방법

sudo apt autoremove --purge mysql-server\* mariadb-server\*
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/mysql/
sudo mkdir -p /etc/mysql/conf.d
sudo apt install mysql-server

 

 

방화벽 설정 확인

# 방화벽 상태 확인
sudo ufw status

# 비활성화 상태
Status: inactive

 
# 방화벽 활성화
sudo ufw enable

# 활성화
Firewall is active and enabled on system startup

# 3306 포트 허가
sudo ufw allow 3306

 

 

mysql 권한 설정

먼저 mysql -u root -p로 접속해야 함.

모든 호스트로부터의 접속을 허가하려면 'localhost' 대신 '%'를 써야한다.

mysql> CREATE USER '유저네임'@'localhost' IDENTIFIED BY '비밀번호';

mysql> GRANT ALL PRIVILEGES ON *.* TO '유저네임'@'localhost' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

 

 

# 모든 접근 가능하도록

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0
반응형

댓글