Navicat連接虛擬機上的mysql


  • 剛剛在虛擬主機上安裝mysql,  想使用Navicat 操作mysql.  但是連接不上
    報錯:  2003 - can't connect to MySQL server on '192.168.1.108'(10038)

    使用apt-get安裝的mysql, 沒有修改任何配置. 在虛擬機里 查看數據庫, 

    use mysql;  # mysql庫里有一個user表
    show tables;
    select user,host from user;
    # 看到root那一行記錄 root對應的host是localhost, 也就是不能遠程登錄的意思. 需要將其修改成%.
    update user set host='%' where user='root'; #表示允許遠程其他用戶登錄

    還有一種方法(沒有嘗試):  grant all privileges on *.* to 'root'@'%' identified by '密碼' with grant option;   #也是修改登錄權限,這個和修改表任選其一

  • 設置完user表還是不行,  繼續
    netstat -apn | grep 3306  #顯示的如果是127.0.0.1:3306那么就注釋/etc/mysql/mysql.conf.d/mysqld.cnf 中的bind-address 127.0.0.1

    注釋完成后重啟mysql.

    #重啟mysql (Ubuntu系統)
    /etc/init.d/mysql  restart

       再使用netstat  -apn | grep 3306 查看 如果顯示的是 :::3306 就OK了    連接成功!!!

  • flush  privileges  #刷新權限, 有的時候可能需要刷新一下,
  • 上面的是在Windows的Ubuntu虛擬機上操作的, 在服務器上操作的時候發現略有不同, 記錄一下. 在服務器上創建新的用戶的時候, 如果想要修改user表, 不需要修改mysqld.cnf文件, 在修改user 表之后, 重啟mysql 即可生效.不用注釋掉這一行了。因為這里不是綁定127.0.0.1,如果綁定127.0.0.1,那就注釋掉。
  • 如果新買的阿里雲服務器,安裝mysql之后,在服務器上能訪問,Navicat鏈接不上,並且已經按照上面的步驟修改了user表和配置文件mysqld.cnf等,還是不能訪問,原因是沒有開放3306端口。
  • 注意:如果user表中同一個用戶名有多個行,比如說root 賬戶,有兩行,一行是host 為localhost   另一行 host 為% , 這個時候如果你在其他電腦登錄mysql 的 root 賬號發現登錄不上去,是因為mysql讀取多個賬號的時候,判斷user,host是有順序的。%排在localhost 的后面,所以判斷結果還是localhost,只能本機登錄。解決辦法:可以臨時修改user表的host為你當前使用的電腦IP,實現永久的在其他電腦登錄mysql , 那就把localhost那個記錄從user表刪除。
  •  訪問控制-連接驗證官方文檔:https://dev.mysql.com/doc/refman/8.0/en/connection-access.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM