sql點滴43—mysql允許用戶遠程登陸
局域網連接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“。
解決辦法如下:
經查閱,錯誤原因是:本地IP(xxx.xxx.xxx.xxx)沒有訪問遠程數據庫的權限。于是下面開啟本地IP(xxx.xxx.xxx.xxx)對遠程mysql數據庫的訪問權限。首先遠程連接進入服務器,在cms中輸入mysql -u root -p,然后回車,輸入密碼后回車進入mysql命令行。

輸入use mysql;

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

添加方法如下:
輸入
grant all privileges on *.* to root@"xxx.xxx.xxx.xxx" identified by "密碼";
這相當于是給IP-xxx.xxx.xxx.xxx賦予了所有的權限,包括遠程訪問權限。
然后再輸入
flush privileges;
這相當于是重新加載一下mysql權限,這一步必須有。

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

不過還有一個問題,發現雙擊打開某張表的時候很慢,至少要3秒。
原因是:
當遠程訪問mysql時, mysql會解析域名, 所以會導致訪問速度很慢, 會有2,3秒延時!
解決辦法:
修改mysql安裝目錄下的my.ini,加上下面這個配置可解決此問題。在[mysqld]下加入:skip-name-resolve
保存退出后重啟mysql服務。
然后訪問速度就和本地一樣快啦。

http://blog.chinaunix.net/uid-9370128-id-1687475.html
作者:Tyler Ning
出處:http://www.rzrgm.cn/tylerdonet/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,請微信聯系冬天里的一把火
浙公網安備 33010602011771號