MySql遠程連接數據庫is not allowed to connect to this MySQL server

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

Sql代碼 複製代碼

   1. mysql -u root -pvmwaremysql>use mysql;

   2. mysql>update user set host = '%' where user = 'root';

   3. mysql>select host, user from user;

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

Sql代碼 複製代碼

  1. GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH

      GRANT OPTION; 

  2.FLUSH   PRIVILEGES;

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

Sql代碼 複製代碼

   1. GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 

   2. 'mypassword' WITH GRANT OPTION; 

   3. FLUSH   PRIVILEGES;

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY

'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

如果你想允許用戶myuser從ip爲192.168.1.6的主機連接到mysql服務器的dk數據庫,並使用mypassword作爲密碼

Sql代碼 複製代碼

   1. GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 

   2. 'mypassword' WITH GRANT OPTION; 

   3. FLUSH   PRIVILEGES;

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY

'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

注意授權後必須FLUSH PRIVILEGES;否則無法立即生效。

另外一種方法.

在安裝mysql的機器上運行:

1、d:\mysql\bin\>mysql -h localhost -u root

//這樣應該可以進入MySQL服務器

2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION

//賦予任何主機訪問數據的權限

3、mysql>FLUSH PRIVILEGES

//修改生效

4、mysql>EXIT

//退出MySQL服務器

這樣就可以在其它任何的主機上以root身份登錄啦!

===============================================================================

遇到了 SQLException: access denied for  @'localhost' (using password: no)

解決辦法   grant all privileges on *.* to joe@localhost identified by '1';

                  flush privileges;

拿  joe    1 登陸

附:

mysql> grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;

權限1,權限2,…權限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權限。
當權限1,權限2,…權限n被all privileges或者all代替,表示賦予用戶全部權限。
當數據庫名稱.表名稱被*.*代替,表示賦予用戶操作服務器上所有數據庫所有表的權限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%'表示從任何地址連接。
‘連接口令’不能爲空,否則創建失敗。

mysql>grant select,insert,update,delete,create,drop on vtdc.employee to [email protected] identified by ‘123′;
給來自10.163.225.87的用戶joe分配可對數據庫vtdc的employee表進行select,insert,update,delete,create,drop等操作的權限,並設定口令爲123。

mysql>grant all privileges on vtdc.* to [email protected] identified by ‘123′;
給來自10.163.225.87的用戶joe分配可對數據庫vtdc所有表進行所有操作的權限,並設定口令爲123。

mysql>grant all privileges on *.* to [email protected] identified by ‘123′;
給來自10.163.225.87的用戶joe分配可對所有數據庫的所有表進行所有操作的權限,並設定口令爲123。

mysql>grant all privileges on *.* to joe@localhost identified by ‘123′;
給本機用戶joe分配可對所有數據庫的所有表進行所有操作的權限,並設定口令爲123。

 

 

來自: http://hi.baidu.com/chssheng2007/blog/item/83a60b54f37d890b3a2935b5.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章