一、現象
我在Window10上連接本地虛擬機Ubuntu上的MySQL數據庫時報錯如下:

二、產生原因
1. 數據庫服務器沒有對外開放mysql的默認端口3306
2. 未設置遠程用戶訪問權限
三、解決方法
1.解決端口問題
(1)檢查下數據庫服務器的3306端口是否開放
數據庫服務器上打開終端查看3306端口是否打開:
$ netstat -an|grep 3306

如果是上圖所示結果:127.0.0.1:3306,說明端口是沒有對外開放的。
(2)開放端口
修改mysql配置文件:
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改該文件,注釋掉圖中標紅部分保存

修改完之后重啟Ubuntu
重啟后再次查看端口:netstat -an|grep 3306

出現上圖說明3306端口已經開發完成。
注意:需要先確認數據庫服務器上用的是不是默認端口3306,如果指定了其他端口的話也是同理操作。
2.開放遠程用戶訪問權限
(1)查看當前權限
a. 在數據庫服務器上先連接mysql:
$ mysql -u root -p
b. 輸入命令:
use mysql;
c. 輸入命令:
select host,user from user;


host一列代表哪個host可以遠程訪問訪問當前數據庫;%表示任意host可以訪問,localhost代表。
所以上圖中我們可以看出如果我們使用root賬號是不能遠程訪問的。
(2)開放權限
假設我們開啟root用戶的權限,命令如下:
grant all privileges on *.* to 'root'@'%' identified by 'xxxxxx';
其中xxxxxx是root用戶的密碼
讓權限立即生效:
flush privileges;

到此操作完成,其他主機可以連接此mysql數據庫服務器了。