今天想用navicat遠程鏈接虛擬機中的MySQL數據庫,一直連不上,在網上搜索了一下,發現緣由是MySQL對遠程用戶登錄的受權問題。這裏說一下個人解決方法。(本人小白)mysql
首先,我用navicat去遠程連接我虛擬機中的MySQL,連接測試失敗。sql
而後在虛擬機中查看網絡端口信息:數據庫
#netstat -ntpl服務器
以後查看了防火牆的狀態,發現3306端口的數據包都是丟棄狀態網絡
#iptables -vnL測試
這裏要清除防火牆中鏈中的規則spa
#iptables -F3d
在這以後,我又遠程連接了一下MySQL,出現瞭如下錯誤,查了一下,是由於MySQL沒有容許遠程登錄,因此要受權MySQL遠程登錄。blog
這裏先說一下MySQL登錄:
格式: mysql -h主機地址 -u用戶名-p用戶密碼ip
一、例1:鏈接到本機上的MYSQL
找到mysql的安裝目錄,通常能夠直接鍵入命令mysql -uroot -p,回車後提示你輸密碼,輸入密碼,直接回車便可進入到MYSQL中了,MYSQL的提示符是:mysql>
二、鏈接到遠程主機上的MySQL
假設遠程主機的IP爲:10.0.0.1,用戶名爲root,密碼爲123。則鍵入如下命令:
mysql -h10.0.0.1 -uroot -p123
(注:p與123(密碼)之間最好不加空格,其它也同樣)
三、退出MySQL命令
exit (回車)
最後受權MySQL,容許遠程用戶登陸訪問MySQL
手動增長能夠遠程訪問數據庫的用戶。
方法1、本地登入mysql,更改 "mysql" 數據庫裏的 "user" 表裏的 "host" 項,將"localhost"改成"%"
#mysql -u root -proot
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
方法2、直接受權(推薦)
從任何主機上使用root用戶,密碼:youpassword(你的root密碼)鏈接到mysql服務器:
# mysql -u root -proot
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
操做完後切記執行如下命令刷新權限
FLUSH PRIVILEGES
這時再經過navicat遠程連接MySQL,連接測試,以下圖,成功。