1. 程式人生 > >解決MySQL不允許(其它IP)從遠端訪問的方法

解決MySQL不允許(其它IP)從遠端訪問的方法

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

1、確定伺服器上的防火牆沒有阻止 3306 埠。

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

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

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

2、增加允許遠端連線 MySQL 使用者並授權。

1)首先以 root 帳戶登陸 MySQL

在 Windows 主機中點選開始選單,執行,輸入“cmd”,進入控制檯,MySQL 的 bin 目錄下,然後輸入下面的命令。

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

MySQL -uroot -p123456

123456 為 root 使用者的密碼。

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

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 為使用者的密碼。

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

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;

如果你想允許使用者myuserip192.168.1.3的主機連線到mysql伺服器,並使用mypassword作為密碼

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