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