1. 程式人生 > >在windows中使用Navicat連接Linux虛擬機中的mysql數據庫

在windows中使用Navicat連接Linux虛擬機中的mysql數據庫

class you 登入 clas input put 回車 之間 安裝目錄

今天想用navicat遠程連接虛擬機中的MySQL數據庫,一直連不上,在網上搜索了一下,發現原因是MySQL對遠程用戶登陸的授權問題。這裏說一下我的解決方法。(本人小白)

  首先,我用navicat去遠程鏈接我虛擬機中的MySQL,鏈接測試失敗。

  然後在虛擬機中查看網絡端口信息:

  #netstat -ntpl

  技術分享圖片

  之後查看了防火墻的狀態,發現3306端口的數據包都是丟棄狀態

  #iptables -vnL

  技術分享圖片

  

  這裏要清除防火墻中鏈中的規則

  #iptables -F

  1. # vim /etc/sysconfig/iptables
向其中加入下列規則:
  1. -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
  2. -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
  3. -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
說明:防火墻開放http用的80端口和連接MySql的3306端口。
  1. # service iptables restart

----------------------------------------------------------到這裏,問題解決了一半了,接下來-------------------------------------------------------------------------------------------

  在這之後,我又遠程鏈接了一下MySQL,出現了以下錯誤,查了一下,是因為MySQL沒有允許遠程登陸,所以要授權MySQL遠程登陸。

  技術分享圖片

  

這裏先說一下MySQL登陸:

  格式: mysql -h主機地址 -u用戶名-p用戶密碼


   1、例1:連接到本機上的MYSQL
   找到mysql的安裝目錄,一般可以直接鍵入命令mysql -uroot -p,回車後提示你輸密碼,輸入密碼,直接回車即可進入到MYSQL中了,MYSQL的提示符是:mysql>

   2、連接到遠程主機上的MySQL
  假設遠程主機的IP為:10.0.0.1,用戶名為root,密碼為123。則鍵入以下命令:
   mysql -h10.0.0.1 -uroot -p123
   (註:p與123(密碼)之間最好不加空格,其它也一樣)

   3、退出MySQL命令
   exit (回車)

最後授權MySQL,允許遠程用戶登錄訪問MySQL

手動增加可以遠程訪問數據庫的用戶。

  方法一、本地登入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;


  方法二、直接授權(推薦)

  從任何主機上使用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,鏈接測試,如下圖,成功。

  技術分享圖片

在windows中使用Navicat連接Linux虛擬機中的mysql數據庫