您好,登錄后才能下訂單哦!
這篇文章主要介紹“允許遠(yuǎn)程連接到MySQL數(shù)據(jù)庫(kù)服務(wù)器的方法步驟”,在日常操作中,相信很多人在允許遠(yuǎn)程連接到MySQL數(shù)據(jù)庫(kù)服務(wù)器的方法步驟問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”允許遠(yuǎn)程連接到MySQL數(shù)據(jù)庫(kù)服務(wù)器的方法步驟”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
配置MySQL服務(wù)器
第一步是設(shè)置MySQL服務(wù)器,以偵聽(tīng)機(jī)器上的某個(gè)特定IP地址或所有IP地址。
如果MySQL服務(wù)器和客戶(hù)端可以通過(guò)專(zhuān)用網(wǎng)絡(luò)相互通信,那么最好的選擇是設(shè)置MySQL服務(wù)器,僅偵聽(tīng)專(zhuān)用IP。否則,如果你想通過(guò)公共網(wǎng)絡(luò)連接到服務(wù)器,就設(shè)置MySQL服務(wù)器,偵聽(tīng)機(jī)器上的所有IP地址。
為此,你需要編輯MySQL配置文件,添加或更改bind-address選項(xiàng)的值。你可以設(shè)置單個(gè)IP地址和IP范圍。如果地址是0.0.0.0,MySQL服務(wù)器接受所有主機(jī)IPv4接口上的連接。如果你在系統(tǒng)上配置了IPv6,改而使用::,而不是0.0.0.0。
MySQL配置文件的位置因發(fā)行版而異。在Ubuntu和Debian中,該文件位于/etc/mysql/mysql.conf.d/mysqld.cnf,而在基于Red Hat的發(fā)行版(比如
CentOS)中,該文件位于/etc/my.cnf。
使用文本編輯器打開(kāi)文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
搜索以bind-address開(kāi)頭的行,將其值設(shè)置為MySQL服務(wù)器應(yīng)偵聽(tīng)的IP地址。
默認(rèn)情況下,該值被設(shè)置為127.0.0.1(僅在localhost中偵聽(tīng))。
在這個(gè)例子中,我們將值改為0.0.0.0來(lái)設(shè)置MySQL服務(wù)器,偵聽(tīng)所有IPv4接口:
mysqld.cnf bind-address = 0.0.0.0 # skip-networking
如果有一行含有skip-networking,刪除該行或通過(guò)在行開(kāi)頭添加#來(lái)注釋掉它。
在MySQL 8.0及更高版本中,bind-address指令可能不存在。在這種情況下,將其添加到[mysqld]部分下。
完成后,重新啟動(dòng)MySQL服務(wù)以使更改生效。只有root用戶(hù)或擁有sudo權(quán)限的用戶(hù)才能重新啟動(dòng)服務(wù)。
想在Debian或Ubuntu上重新啟動(dòng)MySQL服務(wù),請(qǐng)輸入:
sudo systemctl restart mysqld
在基于RedHat的發(fā)行版(比如CentOS)上,想重新啟動(dòng)服務(wù),運(yùn)行:
sudo systemctl restart mysql
授權(quán)用戶(hù)從遠(yuǎn)程機(jī)器來(lái)訪(fǎng)問(wèn)
下一步是允許遠(yuǎn)程用戶(hù)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。
輸入以下內(nèi)容,以root用戶(hù)身份登錄MySQL服務(wù)器:
$ sudo mysql
如果你使用舊的原生MySQL驗(yàn)證插件以root用戶(hù)身份登錄,請(qǐng)運(yùn)行以下 命令,出現(xiàn)提示時(shí)輸入密碼:
$ mysql -uroot -p
從MySQL shell里面,使用GRANT語(yǔ)句為遠(yuǎn)程用戶(hù)授予訪(fǎng)問(wèn)權(quán)限。
mysql> GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
其中:
database_name是用戶(hù)將連接到的數(shù)據(jù)庫(kù)的名稱(chēng)。
user_name是MySQL用戶(hù)的名稱(chēng)。
ip_address是用戶(hù)將連接的IP地址。使用%允許用戶(hù)從任何IP地址進(jìn)行連接。
user_password是用戶(hù)密碼。
比如說(shuō),要授予名為foo、使用密碼my_password的用戶(hù)從IP是10.8.0.5的客戶(hù)端機(jī)器訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)dbname,你要運(yùn)行:
mysql> GRANT ALL ON dbname.* TO foo@'10.8.0.5' BY 'my_passwd';
配置防火墻
最后一步是配置防火墻配置,允許來(lái)自遠(yuǎn)程機(jī)器的通過(guò)端口3306(MySQL默認(rèn)端口)入站的流量。
Iptables
如果你使用iptables作為防火墻,以下 命令將允許從互聯(lián)網(wǎng)上的任何IP地址訪(fǎng)問(wèn)MySQL端口。這很不安全。
$ sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
允許從特定IP地址訪(fǎng)問(wèn):
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW
UFW是Ubuntu中的默認(rèn)防火墻工具。要允許從互聯(lián)網(wǎng)上的任何IP地址進(jìn)行訪(fǎng)問(wèn)(很不安全),請(qǐng)運(yùn)行:
$ sudo ufw allow 3306/ tcp
允許從特定IP地址訪(fǎng)問(wèn):
sudo ufw allow from 10.8.0.5 to any port 3306
FirewallD
FirewallD是CentOS中的默認(rèn)防火墻管理工具。要允許從互聯(lián)網(wǎng)上的任何IP地址進(jìn)行訪(fǎng)問(wèn)(很不安全),請(qǐng)輸入:
$ sudo firewall-cmd --permanent --zone = public --add-port = 3306/ tcp $ sudo firewall-cmd --reload
要允許從特定端口上的特定IP地址進(jìn)行訪(fǎng)問(wèn),你可以創(chuàng)建新的FirewallD區(qū)域或使用豐富的規(guī)則。不妨創(chuàng)建一個(gè)名為mysqlzone的新區(qū)域:
$ sudo firewall-cmd --new-zone=mysqlzone --permanent $ sudo firewall-cmd --reload $ sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 $ sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp $ sudo firewall-cmd --reload
驗(yàn)證更改
要驗(yàn)證遠(yuǎn)程用戶(hù)可以連接到MySQL服務(wù)器,請(qǐng)運(yùn)行以下命令:
mysql -u user_name -h mysql_server_ip -p
其中user_name是你授予訪(fǎng)問(wèn)權(quán)限的用戶(hù)的名稱(chēng),mysql_server_ip是運(yùn)行MySQL服務(wù)器的主機(jī)的IP地址。
如果一切設(shè)置正確,你就能夠登錄到遠(yuǎn)程MySQL服務(wù)器。
如果你收到如下錯(cuò)誤,端口3306未打開(kāi),或者M(jìn)ySQL服務(wù)器未偵聽(tīng)I(yíng)P地址。
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
以下錯(cuò)誤表明你嘗試登錄的用戶(hù)沒(méi)有訪(fǎng)問(wèn)遠(yuǎn)程MySQL服務(wù)器的權(quán)限。
"ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server"
MySQL是默認(rèn)流行的開(kāi)源數(shù)據(jù)庫(kù)服務(wù)器,它僅偵聽(tīng)來(lái)自localhost的入站連接。
要允許遠(yuǎn)程連接到MySQL服務(wù)器,你需要執(zhí)行以下步驟:
1. 配置MySQL服務(wù)器,偵聽(tīng)所有接口或特定接口。
2. 授予遠(yuǎn)程用戶(hù)訪(fǎng)問(wèn)權(quán)限。
3. 打開(kāi)防火墻中的MySQL端口。
到此,關(guān)于“允許遠(yuǎn)程連接到MySQL數(shù)據(jù)庫(kù)服務(wù)器的方法步驟”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。