天天看點

sql點滴43—mysql允許使用者遠端登陸

 方法1

區域網路連接配接mysql報錯:

ERROR 1130: Host '192.168.0.220' is not allowed to connect to this MySQL server

解決方法:

可能是帳号不允許從遠端登陸,隻能在localhost。這個時候隻要在localhost的那台電腦,登入mysql後,更改

"mysql" 資料庫裡的 "user" 表裡的 "host" 項,從"localhost"改稱"%" 或添加一個使用者為“%”  。    

想讓區域網路中的所有機器都能連接配接MySQL資料庫,首先要給MySQL開啟遠端連接配接的功能,在MySQL伺服器控制台上執行MySQL指令:

grant all privileges on *.* to root@"%" identified by 'abc' with grant option; 

flush privileges; 

其中上面兩行代碼的意思是給從任意ip位址連接配接的使用者名為root,密碼為abc的使用者賦予所有的權限。其中的"%"為任意的ip位址,如果想設為特定的值也可以設定為特定的值(以通配符%的内容增加主機/IP位址,也可以直接增加IP位址)。

做完這些之後,區域網路内的mysql伺服器可以通路了。 

添加使用者

添加遠端使用者admin密碼為password

GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY \'password\' WITH GRANT OPTION      

方法2

1.用root使用者登陸,然後執行下面語句

grant all privileges on *.* to zhangsan@"%" identified by "123456";
flush privileges;   * 重新整理剛才的内容*      

格式:grant 權限 on 資料庫教程名.表名 to 使用者@登入主機 identified by "使用者密碼";@ 後面是通路mysql的用戶端ip位址(或是 主機名) % 代表任意的用戶端,如果填寫 localhost 為本地通路(那此使用者就不能遠端通路該mysql資料庫了)。同時也可以為現有的使用者設定是否具有遠端通路權限。如下:

use mysql;
update db set host = '%' where user = '使用者名'; //(如果寫成 host=localhost 那此使用者就不具有遠端通路權限)
flush privileges;
grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;      

方法3 

使用grant語句添加:首先在資料庫本機上用root使用者登入mysql(我是用遠端控制linux伺服器,相當于在伺服器本機登入mysql了),然後輸入:

mysql>grant all privileges on *.* to admin@localhost identified by 'something' with grant option;      

添加一個使用者admin并授權通過本地機(localhost)通路,密碼"something"。

mysql>grant all privileges on *.* to admin@"%" identified by 'something' with grant option;      

如果添加一個使用者admin并授權可從任何其它主機發起的通路(通配符%)。使用這一條語句即可。

使用insert語句:

mysql>insert into user values('%','admin',password('something'), 'y','y','y','y','y','y',
'y','y','y','y','y','y','y','y')      

使用者資訊可在mysql資料庫中的users表中檢視,這裡不在介紹了就。數清y的個數哦。好了,使用admin帳号連接配接試試看,我是屢試屢成功哦,呵呵!

方法4

添加遠端使用者admin密碼為password 

grant all privileges on *.* to admin@localhost identified by 'password' with grant option 
grant all privileges on *.* to admin@"%" identified by 'password' with grant option      

由于項目開發的要求資料庫的設計不得不用遠端模式。但是資料庫的遠端設定并沒那麼簡單,該項目的資料庫是mysql5.0。剛開始以為隻要裝了資料庫伺服器就可以進行遠端連結了,但是mysql的設定是為了使用者的安全,系統預設的設定是不允許遠端使用者連接配接,隻能本地的使用者連接配接。隻要我們設定下系統的管理者使用者的host這一項的值就可以給遠端的使用者通路了。

方法6

用Navicat for MySQl通路遠端mysql資料庫,出現報錯,顯示“1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server“。

sql點滴43—mysql允許使用者遠端登陸

解決辦法如下:

經查閱,錯誤原因是:本地IP(xxx.xxx.xxx.xxx)沒有通路遠端資料庫的權限。于是下面開啟本地IP(xxx.xxx.xxx.xxx)對遠端mysql資料庫的通路權限。首先遠端連接配接進入伺服器,在cms中輸入mysql -u root -p,然後回車,輸入密碼後回車進入mysql指令行。

sql點滴43—mysql允許使用者遠端登陸

輸入use mysql;

sql點滴43—mysql允許使用者遠端登陸

輸入select user,password,host from user;可以看到host中隻有localhost主機。我們需要将xxx.xxx.xxx.xxx也添加到這裡才對。

sql點滴43—mysql允許使用者遠端登陸

添加方法如下:

輸入

grant all privileges on *.* to root@"xxx.xxx.xxx.xxx" identified by "密碼";

這相當于是給IP-xxx.xxx.xxx.xxx賦予了所有的權限,包括遠端通路權限。

然後再輸入

flush privileges;

這相當于是重新加載一下mysql權限,這一步必須有。

sql點滴43—mysql允許使用者遠端登陸

再次輸入select user,password,host from user;可以看到host中已經有了新加的IP。

sql點滴43—mysql允許使用者遠端登陸

不過還有一個問題,發現輕按兩下打開某張表的時候很慢,至少要3秒。

原因是:

當遠端通路mysql時, mysql會解析域名, 是以會導緻通路速度很慢, 會有2,3秒延時!

解決辦法:

修改mysql安裝目錄下的my.ini,加上下面這個配置可解決此問題。在[mysqld]下加入:skip-name-resolve

儲存退出後重新開機mysql服務。

然後通路速度就和本地一樣快啦。

sql點滴43—mysql允許使用者遠端登陸

 http://blog.chinaunix.net/uid-9370128-id-1687475.html

作者:

Tyler Ning

出處:

http://www.cnblogs.com/tylerdonet/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,如有問題,可以通過以下郵箱位址

[email protected]

 聯系我,非常感謝。