https://m.blog.naver.com/PostView.nhn?blogId=onlyu&logNo=220595826451&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
[Ubuntu] MySQL 외부접속 설정하기
MySQL DB 서버에서 사용자가 외부 접속을 할 수 있도록 설정 한다면
grant all privileges on *.* to MYSQL_ID@"%" identified by 'MYSQL_PASSWORD' with grant option;
FLUSH PRIVILEGES;
MySQL ID에접속을 외부도 가능할려면 @에 "%"로 내부만 접속한다면 "%"대신에 "localhost"로 입력하시면 되겠죠.
내부, 외부 접속까지 세팅을 다 했는데 외부에서 접속이 되지 않는다면 MySQL 사용자 계정 설정 외에 다른 곳도 살펴 봐야 합니다.
예)
윈도우에서 Ubuntu MySQL DB로 외부 접속이 되지 않을때 에러 메세지
C:xamppmysqlbin>mysql -h192.168.0.x -uroot -p mysql
Enter password: *
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.x' (10061 "Unknown error")
포그플러그 Arch Linux에서 Ubuntu MySQL DB로 외부 접속 되지 않는 에러 메세지
[root@pogoplug ~]# mysql -h192.168.0.x -uroot -p mysql
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.x' (111 "Connection refused")
MySQL 에러 코드 ERROR 2003 (HY000) 으로 나온다면 아래 해결 방법을 참조 해 주세요.
해결 방법)
방화벽 설정까지 다 했는데 3306 포트가 열려 있는데 위와 같이 MySQL 외부 접속이 되지 않는다면
Ubuntu 서버에서 터미널을 열어서
root@ubuntu1404:~# netstat -antp | grep mysql
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 10579/mysqld
문제점이 보이시나요? 프로세스가 이상하다고 감이 와야 하는데
자! 이렇게 나온다면 /etc/mysql/my.cnf 파일을 열어서
bind-address = 127.0.0.1
나온 구문 앞에 주석 처리를 해 주세요.
#bind-address = 127.0.0.1
그리고 나서 다시 MySQL DB Server를 재구동합니다.
service mysql restart
이제 그럼 다시 프로세스를 확인 해 봅니다.
root@ubuntu1404:/etc/mysql# netstat -antp | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 10834/mysqld
기존 127.0.0.1 로컬에서만 3306포트가 열렸는데 변경된 사항을 확인 할 수 있습니다.
이제 제대로 외부 접속이 가능하도록 되었네요.
접속 테스트를 해 봅니다.
[root@pogoplug ~]# mysql -h192.168.0.x -uroot -p mysql
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MySQL connection id is 40
Server version: 5.5.46-0ubuntu0.14.04.2 (Ubuntu)
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MySQL [mysql]>
![]()
(MySQL 내부 아이피만 접속하기)
ERROR 2003 (HY000): Can't connect to MySQL server on 'x.x.x.x' (113 "No route to host")
공유기 내부 아이피 대역 192.168.0.1~255 접속 가능하도록 iptables에 설정 한다.
/sbin/iptables -A INPUT -s 192.168.0.0/24 -p tcp --destination-port 3306 -j ACCEPT
service iptables save
service iptables restart
/sbin/iptables -L
phpmyadmin에서의 접속는 외부 또는 내부에서 phpmyadmin으로 접속을 하고
phpmyadmin에서 localhost로 mysql에 접속을 하기 때문에 phpmyadmin으로 접속을 하는 것은 localhost로 접속을 하는 것이고
mysql로 직접 접속을 하는 것과는 다름.
즉, phpmyadmin으로 연결이 된다 하더라도 mysql이 잘못 되어있으면 안 된다는 것.