① MySQL에서 루트 사용자의 권한을 설정합니다.
[root@nginx-dev etc]# mysql -uroot -pRoot@123
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root@123' WITH GRANT OPTION;
mysql> select host,user,authentication_string from user;
+-------------+----------------------+-------------------------------------------+
| host | user | authentication_string |
+-------------+----------------------+-------------------------------------------+
| localhost | root | *E32A671056805EBAD613F4090727279564EED370 |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| % | root | *E32A671056805EBAD613F4090727279564EED370 |
| % | myuser | *FABE5482D5AADF36D028AC443D117BE1180B9725 |
+-------------+----------------------+-------------------------------------------+
mysql> flush privileges;
mysql> quit
[root@nginx-dev etc]# service mysqld restart
첫 번째 루트 사용자는 localhost에서만 연결할 수 있고 두 번째 루트 사용자는 모든 호스트에서 연결할 수 있습니다.
② 방화벽이 3306번 포트를 차단했는지 확인하세요.
[root@nginx-dev etc]# systemctl start firewalld
[root@nginx-dev etc]# sudo firewall-cmd --permanent --zone=public --add-port=13306/tcp
Warning: ALREADY_ENABLED: 13306:tcp
success
[root@nginx-dev etc]# sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
Warning: ALREADY_ENABLED: 3306:tcp
success
[root@nginx-dev etc]# sudo firewall-cmd --zone=public --list-ports
13306/tcp 3306/tcp
[root@nginx-dev etc]# netstat -apn | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4379/mysqld
tcp 0 0 192.168.1.9:3306 192.168.1.10:65037 ESTABLISHED 4379/mysqld
tcp 0 0 192.168.1.9:3306 192.168.1.10:65041 ESTABLISHED 4379/mysqld
③ 구성 파일 /etc/my.cnf를 수정하고 바인딩 IP를 0.0.0.0으로 설정합니다. 즉, 모든 주소의 호스트로부터의 연결을 허용하고 포트 3306을 바인딩합니다.