1. Mysql連接問題
遠程訪問mysql或者通過docker訪問宿主機mysql經常會碰到下面的問題:
Can’t connect to MySQL server on (111 “Connection refused”)
解決
找到自己MySQL數據庫配置文件的位置,編輯
/etc/mysql/mysql.conf.d# vi mysqld.cnf
將 bind_address 127.0.0.1
注釋掉
2. 開放遠程連接后,會出現第二個問題:
"Host 'x.x.x.x' is not allowed to connect to this MySQL server"
解決辦法
root 進入數據庫
$ mysql -uroot -p
執行下方兩行命令:
grant all privileges on *.* to 'root'@'%' identified by '12345678' with grant option;
開放所有權限給root,當root以12345678密碼從任意IP登入的時候,允許其操作所有數據庫下的所有表
flush privileges;
刷新,使上述命令生效
3. 重啟數據庫
$ /etc/init.d/mysql stop
$ /etc/init.d/mysql start
再從docker或者遠程主機訪問數據庫的時候就可以了
$ telnet 172.17.0.1 3306
Trying 172.17.0.1...
Connected to 172.17.0.1.
Escape character is '^]'.
注意: grant all privileges on *.* to 'root'@'%' identified by '12345678' with grant option;
給root用戶(mysql用戶里面的root,不是主機)
所有數據庫的最高權限,可能會有安全隱患。可以根據具體需求限制對具體的數據庫,甚至是表格進行授權