在本地電腦上,遠程連接阿里雲服務器上的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端口