允許遠端連線到MySQL資料庫伺服器的步驟
下面介紹允許遠端連線到MySQL伺服器所需的步驟。同樣適用於MariaDB。 |
預設情況下,MySQL伺服器僅偵聽來自localhost的連線,這意味著只能由執行在同一主機上的應用程式訪問它。
但在某些情況下,有必要允許遠端連線。比如你想要從本地系統連線到遠端MySQL伺服器,或者使用多伺服器部署、應用程式與資料庫伺服器不在同一臺機器上執行時。
第一步是設定MySQL伺服器,以偵聽機器上的某個特定IP地址或所有IP地址。
如果MySQL伺服器和客戶端可以通過專用網路相互通訊,那麼最好的選擇是設定MySQL伺服器,僅偵聽專用IP。否則,如果你想通過公共網路連線到伺服器,就設定MySQL伺服器,偵聽機器上的所有IP地址。
為此,你需要編輯MySQL配置檔案,新增或更改bind-address選項的值。你可以設定單個IP地址和IP範圍。如果地址是0.0.0.0,MySQL伺服器接受所有主機IPv4介面上的連線。如果你在系統上配置了IPv6,改而使用::,而不是0.0.0.0。
MySQL配置檔案的位置因發行版而異。在Ubuntu和Debian中,該檔案位於/etc/mysql/mysql.conf.d/mysqld.cnf,而在基於Red Hat的發行版(比如
CentOS)中,該檔案位於/etc/my.cnf。
使用文字編輯器開啟檔案:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
搜尋以bind-address開頭的行,將其值設定為MySQL伺服器應偵聽的IP地址。
預設情況下,該值被設定為127.0.0.1(僅在localhost中偵聽)。
在這個例子中,我們將值改為0.0.0.0來設定MySQL伺服器,偵聽所有IPv4介面:
mysqld.cnf bind-address = 0.0.0.0 # skip-networking
如果有一行含有skip-networking,刪除該行或通過在行開頭新增#來註釋掉它。
在MySQL 8.0及更高版本中,bind-address指令可能不存在。在這種情況下,將其新增到[mysqld]部分下。
完成後,重新啟動MySQL服務以使更改生效。只有root使用者或擁有sudo許可權的使用者才能重新啟動服務。
想在Debian或Ubuntu上重新啟動MySQL服務,請輸入:
sudo systemctl restart mysqld
在基於RedHat的發行版(比如CentOS)上,想重新啟動服務,執行:
sudo systemctl restart mysql
下一步是允許遠端使用者訪問資料庫。
輸入以下內容,以root使用者身份登入MySQL伺服器:
$ sudo mysql
如果你使用舊的原生MySQL驗證外掛以root使用者身份登入,請執行以下 命令,出現提示時輸入密碼:
$ mysql -uroot -p
從MySQL shell裡面,使用GRANT語句為遠端使用者授予訪問許可權。
mysql> GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
其中:
- database_name是使用者將連線到的資料庫的名稱。
- user_name是MySQL使用者的名稱。
- ip_address是使用者將連線的IP地址。使用%允許使用者從任何IP地址進行連線。
- user_password是使用者密碼。
比如說,要授予名為foo、使用密碼my_password的使用者從IP是10.8.0.5的客戶端機器訪問資料庫dbname,你要執行:
mysql> GRANT ALL ON dbname.* TO foo@'10.8.0.5' BY 'my_passwd';
配置防火牆
最後一步是配置防火牆配置,允許來自遠端機器的通過埠3306(MySQL預設埠)入站的流量。
Iptables
如果你使用iptables作為防火牆,以下 命令將允許從網際網路上的任何IP地址訪問MySQL埠。這很不安全。
$ sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
允許從特定IP地址訪問:
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW是Ubuntu中的預設防火牆工具。要允許從網際網路上的任何IP地址進行訪問(很不安全),請執行:
$ sudo ufw allow 3306/ tcp
允許從特定IP地址訪問:
sudo ufw allow from 10.8.0.5 to any port 3306
FirewallD是CentOS中的預設防火牆管理工具。要允許從網際網路上的任何IP地址進行訪問(很不安全),請輸入:
$ sudo firewall-cmd --permanent --zone = public --add-port = 3306/ tcp $ sudo firewall-cmd --reload
要允許從特定埠上的特定IP地址進行訪問,你可以建立新的FirewallD區域或使用豐富的規則。不妨建立一個名為mysqlzone的新區域:
$ 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
要驗證遠端使用者可以連線到MySQL伺服器,請執行以下命令:
mysql -u user_name -h mysql_server_ip -p
其中user_name是你授予訪問許可權的使用者的名稱,mysql_server_ip是執行MySQL伺服器的主機的IP地址。
如果一切設定正確,你就能夠登入到遠端MySQL伺服器。
如果你收到如下錯誤,埠3306未開啟,或者MySQL伺服器未偵聽IP地址。
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
以下錯誤表明你嘗試登入的使用者沒有訪問遠端MySQL伺服器的許可權。
"ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server"
MySQL是預設流行的開源資料庫伺服器,它僅偵聽來自localhost的入站連線。
要允許遠端連線到MySQL伺服器,你需要執行以下步驟:
1. 配置MySQL伺服器,偵聽所有介面或特定介面。
2. 授予遠端使用者訪問許可權。
3. 開啟防火牆中的MySQL埠。
原文地址: https://www.linuxprobe.com/mysql-service.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2669652/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 配置 MySQL 允許遠端連線的方法MySql
- 允許mysql遠端使用者連線。MySql
- 配置redis伺服器允許遠端連線Redis伺服器
- python連線mysql資料庫步驟PythonMySql資料庫
- 遠端連線mysql資料庫MySql資料庫
- 允許本地Sql Server 遠端連線SQLServer
- 雲伺服器SQL Server 2008 允許遠端連線的配置伺服器SQLServer
- 伺服器開啟遠端連線超出了最大允許連線數伺服器
- Mysql8 設定允許遠端連線 (Windows環境)MySqlWindows
- PHP連線資料庫的步驟PHP資料庫
- win10允許遠端桌面連線如何設定_win10怎樣設定允許遠端桌面連線Win10
- MySQL資料庫遠端連線開啟方法MySql資料庫
- 如何快速讓MySQL資料庫伺服器支援遠端連線MRMySql資料庫伺服器
- mysql如何允許遠端訪問MySql
- 117 遠端連線mysql資料庫的幾種方式MySql資料庫
- 解決Windows遠端桌面連線Windows時“終端伺服器超出了最大允許連線數”Windows伺服器
- linux配置mysql資料庫遠端連線失敗LinuxMySql資料庫
- 推送標籤到遠端倉庫的步驟
- CentOS 配置Mysql允許遠端登入CentOSMySql
- 資料庫遠端連線失敗資料庫
- ORACLE 配置連線遠端資料庫Oracle資料庫
- vnc viewer 遠端桌面,vnc viewer 遠端桌面連線的11個步驟VNCView
- git使用步驟——斷開與原來遠端倉庫的連線,連線新倉庫並上傳Git
- win10怎麼遠端桌面連線_win10連線遠端桌面的步驟Win10
- 阿里雲伺服器的MySQL連線和vscode遠端連線阿里伺服器MySqlVSCode
- mysql 開放遠端連線許可權連不上MySql
- WindTerm的安裝及遠端連線Linux系統步驟Linux
- 用SQLyog或Navicat遠端連線資料庫SQL資料庫
- PHP 遠端使用 PDO 連線 access 資料庫PHP資料庫
- PL/SQL Developer連線遠端Oracle資料庫SQLDeveloperOracle資料庫
- python遠端連線mysql以及pandas.DataFrame.to_sql寫入資料庫PythonMySql資料庫
- 撥號vps,遠端連線撥號vps的方法及其步驟
- 雲伺服器MySQL開啟遠端連線伺服器MySql
- VNC遠端連線,如何VNC遠端連線伺服器VNC伺服器
- 使用 SSH 遠端連線到 Linux 伺服器Linux伺服器
- Masonite 熟悉步驟小記錄 (二、連線資料庫)資料庫
- mysql 遠端連線2003MySql
- 【JDBC的實現步驟……MySQL資料庫】JDBCMySql資料庫