共計 4744 個字符,預計需要花費 12 分鐘才能閱讀完成。
這篇文章主要介紹 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 xuys@192.168.88.234 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 服務器網絡內的局域網中就更好了.
Q3:
還是這樣簡潔些:
grant all on yourdb.* to yourUsername@yourHost identified by yourPassword
flush privileges; // 使權限立刻生效
以上是“MYSQL 如何配置遠程連接”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!