原因:mysql安裝好后,默認監聽3306端口,並且只允許localhost訪問,只允許root用戶在localhost上登錄。
我的環境:
Ubuntu16.04
MySQL8.0
方法:所以要遠程連接上mysql數據庫。1,確保3306號端口開放;2,允許其他IP訪問;3,允許root用戶在其他IP上登錄。
解決1:確保3306端口開放
打開3306號端口:sudo ufw allow 3306
查看端口狀態:sudo ufw status # allow就是開放的。
關閉防火牆:sudo ufw disable
開啟防火牆:sudo ufw enable
解決2:允許其他IP訪問
進入到 /etc/mysql/mysql.conf.d 目錄 # 一般mysql默認會安裝在這個目錄下。如果不是,可以使用sudo find / -name "mysql.cnf"來查找文件。
修改mysqld.cnf文件
把bind-address從127.0.0.0改為0.0.0.0
解決3:允許root用戶在其他IP上登錄
使用root用戶登錄mysql數據庫:mysql -u root -p
進入到mysql數據庫:use mysql;
查看user表的host和user數據:select host, user from user; # 會發現root用戶允許的host是localhost。
修改數據:update user set host='%' where user='root'; # 把user為root的host改為%,表示允許root用戶在所有IP上登錄。
重啟mysql:/etc/init.d/mysql restart