개발/Infra

[Infra] centos mysql 외부 접속 가능하게 하기

hojak99 2018. 12. 5. 01:12

전 글에서 centos 에 mysql 5.7버전을 설치하는 글을 작성했다.

이제 윈도우에서 mysql workbench 로 centos 에 깔려있는 mysql 서버에 접속하려고 한다.

$ sudo mysql -u root -p
$ 비번입력

이제 정삭적으로 mysql client 접속이 됐을 것이다.

$ mysql > use mysql;
$ mysql > show tables;

...
user
...

show tables; 를 입력하면 테이블이 짜르륵 뜨는데 그 중 user 테이블을 조회할 것이다.

$ mysql > select host,user from user

그러면 사진과 같이 데이터가 조회가 되는데, host 를 보면 localhost 로 돼 있을 것이다. 이는 해당 user 가 localhost 에서만 접속할 수 있다는 뜻이니 변경을 해줘야 한다.

$ mysql > grant all privileges on *.* to 'root'@'%' identified by 'root의 패스워드';

*.* 는 모든 db 접근이고, '%'는 모든 ip 에 대해 허용한다는 뜻이다. 특정 ip 에만 접근할 수 있도록 설정할 수도 있다.

그리고 적용을 하기 위해 다음과 같은 명령어를 입력한다.

$ mysql > flush privileges;

성공적으로 변경이 됐다면 다시 한 번 확인을 해본다.

$ mysql > select host,user from user;

이제 사진과 같은 row 가 하나 추가될 것이다.

어! 근데 root 가 2개인데요? 할 수도 있는데 검색해보면 스택오버플로우에서 잘 설명을 해준다. (참고링크 : https://dba.stackexchange.com/questions/59412/multiple-root-users-in-mysql)

| root   | %         | - This is the root user from any computer
| root   | 127.0.0.1 | - This is the root user for localhost without resolved IP for IPv4
| root   | ::1       | - This is the root user for localhost without resolved IP for IPv6
| root   | localhost | - This is the root user for localhost with resolved IP
| root   | mysrverhostname | - This is the root user if you connect from the localhost to its externel IP.

어쨌든 별 상관 없으니 패스


이제 mysql config 파일에서 bind-address 가 default 로 로컬만 접속될 수 있게 설정이 돼 있을 수도 있으니 주석을 달으러 가자.

$ mysql > exit
$ sudo vi /etc/my.conf

...
~~
...

그런데 필자는 bind-address 관련 내용이 없어서 그냥 내비뒀다. 만약 존재한다면 주석을 달아주도록 하자.

그리고 mysql 서비스를 한 번 restart 시켜주자.

$ systemctl restart mysqld

그리고 mysql port 를 열어주러 가자.

$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent

이제 centos 에서 해줄 설정들은 모두 완료됐다.


workbench 접속하기

mysql workbench 를 켜고 connection 을 추가해주자.

주의할 점은 형관팬으로 쫙 밑줄 그었다.

그러면 성공!

반응형