天天看點

Mysql開啟遠端連接配接方法

解決MySQL不允許從遠端通路的方法

開啟 MySQL 的遠端登陸帳号有兩大步:

1、确定伺服器上的防火牆沒有阻止 3306 端口。

MySQL 預設的端口是 3306 ,需要确定防火牆沒有阻止 3306 端口,否則遠端是無法通過 3306 端口連接配接到 MySQL 的。

如果您在安裝 MySQL 時指定了其他端口,請在防火牆中開啟您指定的 MySQL 使用的端口号。

如果不知道怎樣設定您的伺服器上的防火牆,請向您的伺服器管理者咨詢。

2、增加允許遠端連接配接 MySQL 使用者并授權。

1)首先以 root 帳戶登陸 MySQL

在 Windows 主機中點選開始菜單,運作,輸入“cmd”,進入控制台,MySQL 的 bin 目錄下,然後輸入下面的指令。

在 Linux 主機中在指令提示行下輸入下面的指令。

  • CODE:  [COPY]
  • > MySQL -uroot -p123456

123456 為 root 使用者的密碼。

2)建立遠端登陸使用者并授權

  • CODE:  [COPY]
  • > grant all PRIVILEGES on discuz.* to ted@'123.123.123.123' identified by '123456';

上面的語句表示将 discuz 資料庫的所有權限授權給 ted 這個使用者,允許 ted 使用者在 123.123.123.123 這個 IP 進行遠端登陸,并設定 ted 使用者的密碼為 123456 。

下面逐一分析所有的參數:

all PRIVILEGES 表示賦予所有的權限給指定使用者,這裡也可以替換為賦予某一具體的權限,例如:select,insert,update,delete,create,drop 等,具體權限間用“,”半形逗號分隔。

discuz.* 表示上面的權限是針對于哪個表的,discuz 指的是資料庫,後面的 * 表示對于所有的表,由此可以推理出:對于全部資料庫的全部表授權為“*.*”,對于某一資料庫的全部表授權為“資料庫名.*”,對于某一資料庫的某一表授 權為“資料庫名.表名”。

ted 表示你要給哪個使用者授權,這個使用者可以是存在的使用者,也可以是不存在的使用者。

123.123.123.123 表示允許遠端連接配接的 IP 位址,如果想不限制連結的 IP 則設定為“%”即可。

123456 為使用者的密碼。

執行了上面的語句後,再執行下面的語句,方可立即生效。

CODE:  [COPY] >  flush privileges ;

-----------------------------------------------------------------------------------------------------------------

解決方法:

1、改表法:

可能是你的帳号不允許從遠端登陸,隻能在localhost。這個時候隻要在localhost的那台電腦,登入mysql後,更改 “mysql” 資料庫裡的 “user” 表裡的 “host” 項,從“localhost”改稱“%”

x:\>mysql -u root -pvmware

mysql> use mysql;

mysql> update user set host = ‘%’ where user = ‘root’;

mysql> select host, user from user;

mysql> flush privileges;

注:mysql> flush privileges; 使修改生效。

2、授權法:

例如,你想myuser使用mypassword從任何主機連接配接到mysql伺服器的話。

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

如果你想允許使用者myuser從ip為192.168.1.3的主機連接配接到mysql伺服器,并使用mypassword作為密碼

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

轉自: http://hi.baidu.com/593313600/blog/item/52c13d3d4640d208baa167cf.html/cmtid/df0698f382f04d5d352acce8   --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------   二、 問如何開啟MySQL的遠端連接配接     Q:       最近學習PHP,裝了個phpwind論壇和FTP流量插件,需要遠端連接配接MySQL資料庫.不知道如何打開本地伺服器的遠端連接配接.現在本地伺服器上的論壇和FTP流量插件都運作正常,在另一台伺服器上安裝插件,連不上資料庫.到PW官方求助沒人回貼.是以來這尋求幫助.

    伺服器資訊

    PHP程式版本:  4.3.11

    MySQL 版本:  4.1.10-nt

    伺服器端資訊:  Microsoft-IIS/5.0

    裝有phpMyAdmin        A1:       遠端連接配接到MySQL需要做的

    1. 進入MySQL,建立一個新使用者xuys:

        格式:  grant 權限 on 資料庫名.表名 使用者@登入主機 identified by "使用者密碼";

     grant select,update,insert,delete on *.* to [email protected] identified by "xuys1234";

        檢視結果,執行:

     use mysql;

    select host,user,password from user;

        可以看到在user表中已有剛才建立的xuys使用者,host字段表示登入的主機,其值可以用IP,也可用主機名,将host字段的值改為%就表示在任何用戶端機器上能以xuys使用者登入到MySQL伺服器,建議在開發時設為%.      update user set host = '%' where user = 'xuys';

    2.      ./mysqladmin -u root -p pwd reload

    ./mysqladmin -u root -p pwd shutdown

    3.      ./mysqld_safe --user=root &

        記住: 對授權表的任何修改都需要重新reload,即執行第3步.

    如果經過以上3個步驟還是無法從用戶端連接配接,請執行以下操作,在MySQL資料庫的db表中插入一條記錄:      use mysql;

    insert into db values('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

    update db set host = '%' where user = 'xuys';

        重複執行上面的第2,3步.          A2:       Web與MySQL資料庫分離開來是一個不錯的選擇,避免因為大量的資料庫查詢占用CPU而使Web資源不足,同時可以使Web伺服器的資源盡最大的提供浏覽服務,而資料庫伺服器單獨的隻處理資料庫事務.

    我對這方面的原理不甚太十分了解,我的做法其實就是下面要說的,很簡單.大家有更好的經驗和技巧不妨提出來分享一下.

    适用範圍: 擁有獨立主機權限

    硬體配置: 兩台伺服器,至于具體伺服器硬體配置就不在本文範圍内了

    其中: A為Web伺服器(假設IP為: 192.192.192.192),B為MySQL資料伺服器(假設IP為: 168.168.168.168)

    着手動作:

    1. 在Web伺服器A配置好Web服務.關于這方面文章很多了.假設Web伺服器的IP為: 192.192.192.192

    2. 在資料庫伺服器B安裝好MySQL服務

    3. 現在新版的MySQL一般預設都不允許遠端連接配接的,需要建立遠端連接配接賬号才可以

        以指令行方式使用root賬号進入MySQL

     mysql -u root -p pass

    選擇進入MySQL資料庫

     use mysql;

    檢視所有存在的賬号和位址

     SELECT `Host`,`User` FROM `user`;

    比如我的就是:

     +------------+-------+

    | Host        | User  |

    +------------+-------+

    | localhost |          |

    | localhost | pma  |

    | localhost | root   |

    +------------+-------+

    3 rows in set (0.00 sec)

        也就是說,存在三個隻允許本地連接配接的(localhost)賬号,分别為root,pma,空使用者.

    現在決定讓root具有上面那個Web伺服器A的遠端連結的權限,那麼就這樣:

     UPDATE `user` SET `Host` = '192.192.192.192' WHERE `User` = 'root' LIMIT 1;

    這樣192.192.192.192這台Web伺服器就可以遠端連接配接到這個資料庫伺服器了,假如你想讓任何遠端機器都可以連接配接這個資料庫,就将192.192.192.192換為%,不過不建議這樣做,原因你知道啦!

    假如你想建立一個使用者new_user具備遠端連結的權限的話,就這樣:

     INSERT INTO `user` ( `Host` , `User` , `Password` , `Select_priv` , `Insert_priv` , `Update_priv` , `Delete_priv` , `Create_priv` , `Drop_priv` , `Reload_priv` , `Shutdown_priv` , `Process_priv` , `File_priv` , `Grant_priv` , `References_priv` , `Index_priv` , `Alter_priv` , `Show_db_priv` , `Super_priv` , `Create_tmp_table_priv` , `Lock_tables_priv` , `Execute_priv` , `Repl_slave_priv` , `Repl_client_priv` , `ssl_type` , `ssl_cipher` , `x509_issuer` , `x509_subject` , `max_questions` , `max_updates` , `max_connections` ) VALUES ('192.192.192.192', 'new_user', PASSWORD( 'new_user_password' ) , 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');

    将new_user改為你想要的名字就可以了,密碼是:  new_user_password,當然你可以随意設定.

    當你的資料庫可以遠端連接配接後,你就可以在你的Web伺服器的論壇config.inc.php中設定$dbhost變量為你的MySQL資料庫伺服器B的IP了:      $dbhost = '168.168.168.168';

    實際操作中,最好兩台機器在同一個機房的同一網段/防火牆内.當然如果有可能的話,将資料庫伺服器放置于Web伺服器網絡内的區域網路中就更好了.

繼續閱讀