MySQL允許遠(yuǎn)程連接的配置指南
前言
MySQL 是一個(gè)廣泛使用的開源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。在實(shí)際開發(fā)中,我們經(jīng)常需要從本地或外部服務(wù)器連接到 MySQL 數(shù)據(jù)庫(kù)。本文將詳細(xì)介紹如何配置 MySQL 以允許遠(yuǎn)程連接。
準(zhǔn)備工作
服務(wù)器為 Linux
已安裝 MySQL 的服務(wù)器(本博客基于 MySQL 8.0)
擁有管理員權(quán)限的用戶
確保目標(biāo)客戶端可以通過(guò)網(wǎng)絡(luò)訪問 MySQL 服務(wù)器的 3306 端口
步驟一:修改 MySQL 配置文件
默認(rèn)情況下,MySQL 只允許本地連接(localhost)。要開啟遠(yuǎn)程連接,需修改其配置文件。
1. 找到配置文件
Linux 系統(tǒng)一般位于 /etc/mysql/mysql.conf.d/mysqld.cnf
或者使用命令查找:
mysql --help | grep "my.cnf"
2. 修改 bind-address
找到如下行:
bind-address = 127.0.0.1
將其改為:
[mysqld] bind-address = 0.0.0.0
這表示監(jiān)聽所有 IP 地址上的連接請(qǐng)求。
注意:如果你使用的是云服務(wù)器(如阿里云、騰訊云),還需開放對(duì)應(yīng)的安全組規(guī)則。
步驟二:創(chuàng)建或授權(quán)遠(yuǎn)程訪問用戶
1.登錄 MySQL:
mysql -u root -p
2. 創(chuàng)建新用戶并授權(quán)遠(yuǎn)程訪問
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
‘remote_user’@‘%’ 表示任何 IP 都可以使用 remote_user 登錄。
若只允許特定 IP,可替換為 ‘remote_user’@‘192.168.1.100’。
3. (可選)修改已有用戶的權(quán)限
GRANT ALL PRIVILEGES ON *.* TO 'existing_user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
步驟三:重啟 MySQL 服務(wù)
使配置生效,重啟 MySQL 服務(wù):
sudo systemctl restart mysql
安全建議
避免使用 root 用戶進(jìn)行遠(yuǎn)程連接
使用強(qiáng)密碼策略
在生產(chǎn)環(huán)境中限制訪問 IP 范圍
啟用 SSL 加密連接(高級(jí)用法)
測(cè)試遠(yuǎn)程連接
使用客戶端工具(如 Navicat、DBeaver、MySQL Workbench 或命令行)嘗試連接:
mysql -h your_server_ip -u remote_user -p
如果提示連接成功,則說(shuō)明配置已生效!
云服務(wù)器注意事項(xiàng)
如果使用的是云服務(wù)器,上面操作確保無(wú)誤之后還是不能遠(yuǎn)程連接,請(qǐng)務(wù)必檢查:
安全組是否放行 3306 端口
是否關(guān)閉了防火墻(如 UFW、iptables)
是否綁定了公網(wǎng) IP(某些 VPC 環(huán)境需要注意)
方法補(bǔ)充
MySQL 設(shè)置允許遠(yuǎn)程連接完整指南
1.基礎(chǔ)配置步驟(以MySQL 8.0為例)
修改MySQL綁定地址
默認(rèn)情況下MySQL僅監(jiān)聽127.0.0.1,需改為0.0.0.0或服務(wù)器公網(wǎng)IP。
打開配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # Ubuntu/Debian # 或 sudo nano /etc/my.cnf # CentOS/RHEL
找到 bind-address 并修改:
[mysqld] bind-address = 0.0.0.0 # 允許所有IP訪問(生產(chǎn)環(huán)境慎用) # 或指定特定IP # bind-address = 192.168.1.100
重啟MySQL服務(wù):
sudo systemctl restart mysql # systemd系統(tǒng) # 或 sudo service mysql restart # init.d系統(tǒng)
創(chuàng)建遠(yuǎn)程訪問用戶
切勿直接使用root賬戶遠(yuǎn)程連接!
登錄MySQL控制臺(tái):
mysql -u root -p
創(chuàng)建專用遠(yuǎn)程用戶:
-- MySQL 8.0+ 需指定加密插件 CREATE USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongPassw0rd!'; -- 授權(quán)所有數(shù)據(jù)庫(kù)(按需縮小權(quán)限) GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
關(guān)鍵參數(shù)說(shuō)明:
- 'remote_user'@'%':允許從任何IP連接(建議改為具體IP段如'192.168.1.%')
- mysql_native_password:兼容舊客戶端的加密方式(8.0默認(rèn)使用caching_sha2_password)
配置防火墻
開放MySQL默認(rèn)端口3306:
# Ubuntu UFW sudo ufw allow 3306/tcp # CentOS Firewalld sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
2.高級(jí)安全加固方案
限制訪問IP
通過(guò)MySQL用戶權(quán)限限制來(lái)源IP:
-- 僅允許192.168.1.0/24網(wǎng)段訪問 CREATE USER 'secure_user'@'192.168.1.%' IDENTIFIED BY 'Password123!';
使用SSH隧道
更安全的連接方式(無(wú)需開放3306端口):
ssh -L 3306:localhost:3306 user@mysql-server.com
客戶端連接本地127.0.0.1:3306即可穿透到遠(yuǎn)程MySQL。
啟用SSL加密
檢查MySQL SSL支持:
SHOW VARIABLES LIKE '%ssl%';
強(qiáng)制用戶使用SSL連接:
ALTER USER 'remote_user'@'%' REQUIRE SSL;
客戶端連接時(shí)添加參數(shù):
mysql -u remote_user -p -h mysql-host --ssl-mode=REQUIRED
審計(jì)與監(jiān)控
啟用查詢?nèi)罩荆?/p>
[mysqld] general_log = 1 general_log_file = /var/log/mysql/query.log
使用審計(jì)插件(企業(yè)版)或第三方工具如Percona Audit Plugin。
3.連接測(cè)試與故障排查
測(cè)試遠(yuǎn)程連接
mysql -u remote_user -p -h mysql-server-ip --port=3306
常見錯(cuò)誤解決方案
| 錯(cuò)誤提示 | 原因 | 解決方案 |
|---|---|---|
| ERROR 1130 (HY000) | 用戶權(quán)限不足 | 檢查GRANT語(yǔ)句和用戶主機(jī)限制 |
| ERROR 2003 (HY000) | 端口不通/防火墻攔截 | 使用telnet mysql-host 3306測(cè)試 |
| ERROR 1045 (28000) | 密碼錯(cuò)誤 | 重置密碼:ALTER USER ... |
| Public Key Retrieval is not allowed | 加密插件沖突 | 添加連接參數(shù):--ssl-mode=DISABLED |
診斷工具
檢查端口監(jiān)聽狀態(tài):
sudo netstat -tuln | grep 3306
查看實(shí)時(shí)連接:
SHOW PROCESSLIST;
到此這篇關(guān)于MySQL允許遠(yuǎn)程連接的配置指南的文章就介紹到這了,更多相關(guān)MySQL允許遠(yuǎn)程連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
net?start?mysql服務(wù)名無(wú)效的三種解決方法
這篇文章主要介紹了net?start?mysql服務(wù)名無(wú)效的三種解決方法,通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08
php+mysql prepare 與普通查詢的性能對(duì)比實(shí)例講解
prepare可以解決大訪問量的網(wǎng)站給數(shù)據(jù)庫(kù)服務(wù)器所帶來(lái)的負(fù)載和開銷,本文章通過(guò)實(shí)例向大家介紹預(yù)查詢prepare與普通查詢的性能對(duì)比,需要的朋友可以參考一下2016-11-11
mysql復(fù)制中臨時(shí)表的運(yùn)用技巧
數(shù)據(jù)庫(kù)損壞,也沒有備份。剛好二進(jìn)制日志全部保存完好,幸福了。導(dǎo)入二進(jìn)制日志到MYSQL2012-09-09
MySQL分區(qū)表實(shí)現(xiàn)按月份歸類
mysql 單表數(shù)據(jù)量達(dá)到千萬(wàn)、億級(jí),可以通過(guò)分表與表分區(qū)提升服務(wù)性能。本文主要介紹了MySQL分區(qū)表實(shí)現(xiàn)按月份歸類,感興趣的可以了解一下2021-10-10
Ubuntu?18.04.4安裝mysql的過(guò)程詳解?親測(cè)可用
這篇文章主要介紹了Ubuntu?18.04.4安裝mysql-親測(cè)可用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
MySQL 的 binlog(Binary Log)日志關(guān)閉的方法
文章介紹了MySQL binlog的作用及關(guān)閉方法,binlog用于數(shù)據(jù)恢復(fù)、主從復(fù)制和審計(jì),關(guān)閉可節(jié)省空間,可通過(guò)命令檢查狀態(tài),臨時(shí)關(guān)閉使用SET語(yǔ)句,永久關(guān)閉需修改配置文件并重啟MySQL,關(guān)閉后可手動(dòng)清理日志文件,感興趣的朋友跟隨小編一起看看吧2025-07-07

