Database

[MySQL 01] 우분투 접속 문제 해결

PIYA 2022. 6. 15.

접속 문제 해결

우분투에서 처음 mysql을 세팅하다 보면 생각처럼 접속이 잘 안되는 경우가 많다.
아래의 사항들을 하나씩 체크해보면 해결할 수 있다.

방화벽 문제의 경우

설치 후 접속이 되지 않는다면 방화벽 문제일 수 있다.

특히, 구글 클라우드 플랫폼(GCE: Google Compute Engine)을 사용할 경우 방화벽 룰을 설정해주어야 한다.
GCE에서 VPC네트워크 들어가서 firewall 설정으로 Ingress 3306 포트를 여는 태그를 만든다.
0.0.0.0으로 설정하면 작동하지 않고, 0.0.0.0/0으로 설정해야 작동한다.
VM Instance로 가서 해당 태그를 입력시킨다.

mysql bind-adress 문제의 경우

접속허용 IP주소를 설정하는 작업이다.
기본 세팅이 127.0.0.1로 되어있으며, 이는 자기자신에서만 접속을 허용한다는 뜻이다.
0.0.0.0으로 수정해주지 않으면 외부에서 접속할 수 없다.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# bind-address 검색해 0.0.0.0 으로 수정 (모든 접속 허용)
sudo systemctl restart mysql # 재부팅해주고
sudo netstat -antp | grep mysql # foreign address 0.0.0.0으로 설정 확인

계정의 host 설정 문제의 경우

mysql에서는 유저를 생성할 때 host정보도 같이 입력해주어야한다.
지정된 host 이외의 주소에서는 접속이 차단된다.
해당 계정에 대해 모든 주소에서 접속이 가능하게 하려면 host를 %로 세팅하면 된다.

create user username@'%' identified by 'user_password'

-- 이미 생성한 유저의 호스트정보를 %로 바꾸는 경우
update user set host='%' where user='username';

해당 DB에 대한 계정 권한 문제의 경우

해당 계정이 접속하고자 하는 데이터베이스에 권한이 없으면 $ show databases; 명령에도 보이지 않는다.
접속까지 안되는지는 확실치는 않다.

-- 특정 DB와 테이블에 대한 모든 권한을 주는 경우
grant all privileges on [DB]@[table] to 'username'@'%';

-- username@% 계정에 모든 DB와 테이블에 대한 전체 권한을 주는 경우
grant all privileges on *.* to 'username'@'%';

'Database' 카테고리의 다른 글

[MySQL 02] SQL 쿼리문  (0) 2022.06.15
[MySQL 00] 우분투 셋업부터 시작하기  (0) 2022.06.07

댓글