解決:連線不上 docker中的mysql
阿新 • • 發佈:2022-04-20
在本地電腦上,遠端連線阿里雲伺服器上的docker中的mysql,明明賬號,密碼都沒有錯,但一直出現以下錯誤,拒絕聯絡,其實這是由於許可權不足的原因。
首先問題
目前問題已解決
1、檢視我們想要連線的mysql是否啟動
#檢視在執行的容器
docker ps -s
2、進入容器
# docker exec -it 容器號或名 /bin/bash
docker exec -it mysql /bin/bash
3、進入mysql
mysql -uroot -p
#輸入密碼(跟之前在windows上執行mysql是一樣的)
4、檢視MySQL的資訊
select host,user,plugin,authentication_string from mysql.user;
重點來了:host為 % 表示不限制ip localhost表示本機使用 (作者的問題就是當時的root對應的host不為%,而是localhost)
plugin非mysql_native_password 則需要修改密碼
5、修改密碼和host
alter user 'root'@'%' identified with mysql_native_password by '123456';
這裡注意自己要修改對應的使用者名稱和密碼
6、新建使用者(也是一種解決辦法)
USE mysql;
CREATE USER 'user'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'user'@'%';
FLUSH PRIVILEGES;
當然,也要注意一下是不是防火牆的問題
若無法連通宿主機地址:埠,可能是因為防火牆沒有關閉,可以用以下命令關閉防火牆
[root@localtion]$ sudo systemctl stop firewalld #關閉防火牆
[root@localtion]$ sudo systemctl disable firewalld #重啟後也不開啟防火牆
若必需開啟防火牆,則使用防火牆單獨開啟3306埠即可
[root@localtion]$ : sudo firewall-cmd --zone=public --permanent --add-port=3306/tcp
[root@localtion]$ : sudo ffirewall-cmd --reload 永久開啟3306埠