mysql無法遠程連接的解決方法


    在阿里雲服務器上安裝好MySQL后,首先想到的就是安裝一款工具來管理數據庫,一開始選擇了phpMyAdmin,這個工具安裝很簡單,只要解壓到能訪問的目錄下就行了。在瀏覽器中訪問phpMyAdmin目錄就行了,輸入用戶名和密碼就能進入管理數據庫了。
但是每次打開瀏覽器來管理數據庫還是不太方便,所以最終選擇了Navicat軟件來管理數據庫,在新建連接時,輸入正確的主機、用戶名和密碼,連接測試時彈出如下錯誤。


原因是MySQL默認不支持遠程連接,(那么phpMyAdmin為什么可以連接呢?那是因為phpMyadmin的環境是上傳到服務器的,其本身訪問數據庫是相當於本機localhost訪問的),如果想遠程訪問,可以使用下面的方法來解決。

遠程連接mysql數據庫時出現如下提示信息:“MYSQL CONNECT ERROR – 1130:Host ’202.43.**.**’ is not allowed to connect to this MySQL server”

在創建mysql賬戶時,限制連接賬戶遠程登錄。也就是說,除了當前mysql所在的安裝服務器外,其他的ip(主機)都是不允許訪問的,即使你的用戶名和密碼是正確的。這時候就要修改用戶的訪問權限。


首先是用root用戶登錄到mysql的安裝主機,然后進入mysql:

mysql -u root -p

root是mysql的最高授權用戶名,這時會提示你輸入密碼,正確輸入密碼后回車,進入mysql。回車

然后輸入如下命令:

grant all on 數據庫名.* to ‘數據庫賬戶名’@’%’ identified by ‘密碼’ with grant option;


回車

flush privileges;

回車
注意:上面的單引號不能省,數據庫名.* 表示要開放的數據庫下所有表,如果該連接的所有數據庫都要開放,可以用 *.* 代替。
‘數據庫賬戶名’@’%’ 這里表示要開放的賬戶,百分號表示在任何主機都允許訪問。
如果以上兩步均顯示 “Query OK, 0 rows affected (0.00 sec)”,那么說明命令已經成功執行,現在就可以遠程連接你的mysql數據庫了。

(1).如果想賦予所有操作的權限

  grant all on ... to 用戶名......

(2).如果想賦予操作所有數據庫的所有表的權限

  grant ... on *.* to 用戶名......

(3).如果想賦予某個數據庫的所有表

  grant ... on 數據庫名稱.'*' to 用戶名...... ([ * ]兩邊一定要加單引號)

(4).如果想賦予某個數據庫的某張表

  grant ... on 數據庫名稱.表名 to 用戶名......

(5).如果想任何客戶端都能通過該用戶名遠程訪問

  grant ... on ... to 用戶名@% ....... (要把IP地址改成[ % ])

(6).改完了以后一定要重新啟動MySQL服務

用戶會存到Mysql服務器上的user表中,所以下面的兩種方法都可以解決這個問題:

1。 改表法。可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那台電腦,登入mysql后,更改 "mysql" 數據庫里的 "user" 表里的 "host" 項,從"localhost"改稱"%"

mysql -u root -p

mysql>use mysql;

mysql>update user set host = ’%’ where user = ’root’;mysql>select host, user from user; 

mysql>flush privileges;

2. 授權法。例如,你想myuser使用mypassword從任何主機連接到mysql服務器的話。

GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION; 

如果你想允許用戶myuser從ip為192.168.1.3的主機連接到mysql服務器,並使用mypassword作為密碼

GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.3’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;


如果還是無法遠程我們可參考

1、Mysql的端口是否正確,通過netstat -ntlp查看端口占用情況,一般情況下端口是3306。在用工具連接MySQl是要用到端口。例如My AdminMy Query BrowserMySQl Front等。

2、檢查用戶權限是否正確。
   例如:用戶Tester,user表里有兩條記錄:host分別為localhost和%(為了安全,%可以換成你需要外部連接的IP)。


3、查看/etc/my.cnf中,skip-networking 是否已被注掉,需要注掉。
 報錯:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (111)


4、查看iptables是否停掉,沒關的情況下,無法連接。
通過:service iptables stop臨時關閉。
報錯:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (113)

另外,我們還可以通過配置http通道來使Navicat遠程連接到數據庫,這樣做的好處是不需要前面繁雜的配置。在主機名IP地址那里填寫LocalHost

用戶名與密碼一欄則填寫你所在的數據庫用戶名與密碼。

這時候還不能連接數據庫的,需要通過Http通道的形式進行數據庫連接。

點擊連接屬性標簽欄中的Http,如下圖所示:

勾選使用Http通道后,在通道地址一欄輸入你的網址與后台文件地址。

例如:http://host/ntunnel_mysql.php

這里說明一下通道地址,前半部份:http://host/是指你的服務器的域名,后半部份:ntunnel_mysql.php是指NaviCat客戶端后台連接地址。這里ntunnel_mysql.php可以根據你自己的喜好去重命名。那么,這個ntunnel_mysql.php文件在哪里找呢?

這個ntunnel_mysql.php文件在你點擊確定保存了連接信息后,會自動生成一個php文件於NaviCat的文件根目錄下,,如下圖所示:

使用Ftp工具將該文件上傳到能通道地址目錄就行了。

現在連接測試就能成功了。








免責聲明!

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



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