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」php

在建立mysql帳戶時,限制鏈接帳戶遠程登陸。也就是說,除了當前mysql所在的安裝服務器外,其餘的ip(主機)都是不容許訪問的,即便你的用戶名和密碼是正確的。這時候就要修改用戶的訪問權限。mysql


首先是用root用戶登陸到mysql的安裝主機,而後進入mysql:sql

mysql -u root -p數據庫

root是mysql的最高受權用戶名,這時會提示你輸入密碼,正確輸入密碼後回車,進入mysql。回車瀏覽器

而後輸入以下命令:安全

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


回車
ide

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;


若是仍是沒法遠程咱們可參考

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

二、檢查用戶權限是否正確。
   例如:用戶Tester,user表裏有兩條記錄:host分別爲localhost和%(爲了安全,%能夠換成你須要外部鏈接的IP)。


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


四、查看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工具將該文件上傳到能通道地址目錄就好了。

如今鏈接測試就能成功了。





相關文章
相關標籤/搜索