首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Linux 下 MySQL 建立遠程帳號、授權、撤銷與防火牆配置全流程

     編輯:MySQL 資料庫相關知識

場景:主機 A (MySQL) 授權主機 B (應用) 訪問

1. 登入 MySQL 建立帳號並授權

# 登入
mysql -u root -p

# 建立帳號 + 指定密碼 + 授權特定庫
CREATE USER 'app_user'@'192.168.1.50' IDENTIFIED BY 'StrongPass#2024';
GRANT SELECT, INSERT, UPDATE, DELETE ON `app_db`.* TO 'app_user'@'192.168.1.50';
FLUSH PRIVILEGES;

常用授權模板

需求SQL
全庫全表最高權限(僅內網)GRANT ALL PRIVILEGES ON *.* TO 'admin'@'192.168.1.%' IDENTIFIED BY 'Pass#2024' WITH GRANT OPTION;
唯讀帳號(支援備份)GRANT SELECT, LOCK TABLES, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO 'readonly'@'10.0.0.%' IDENTIFIED BY 'ReadOnly#2024';
開發帳號(含建表、索引)GRANT CREATE, ALTER, DROP, INDEX, SELECT, INSERT, UPDATE, DELETE ON `dev_db`.* TO 'dev'@'%' IDENTIFIED BY 'DevPass#2024';

2. 撤銷權限與刪除帳號

-- 撤銷特定權限
REVOKE UPDATE ON `app_db`.* FROM 'app_user'@'192.168.1.50';

-- 撤銷所有權限
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'app_user'@'192.168.1.50';

-- 刪除帳號(同步清理關聯權限表)
DROP USER 'app_user'@'192.168.1.50';

FLUSH PRIVILEGES;

3. 查看與審計

-- 列出所有帳號
SELECT User, Host FROM mysql.user ORDER BY Host, User;

-- 查看特定帳號權限
SHOW GRANTS FOR 'app_user'@'192.168.1.50';

-- 審計:空密碼、通配符過寬、無權限帳號
SELECT User, Host, authentication_string 
FROM mysql.user 
WHERE authentication_string = '' OR authentication_string IS NULL
   OR Host = '%';

4. Linux 防火牆放行 3306

firewalld (CentOS 7+/RHEL 7+)

firewall-cmd --permanent --add-port=3306/tcp
# 僅允許特定 IP
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.50" port port="3306" protocol="tcp" accept'
firewall-cmd --reload

iptables (通用)

# 插入到 ICMP 規則之前(關鍵順序)
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
# 或限定來源
iptables -I INPUT -s 192.168.1.50 -p tcp --dport 3306 -j ACCEPT
service iptables save

5. MySQL 綁定網卡(若尚未配置)

# /etc/my.cnf
[mysqld]
bind-address = 0.0.0.0
# 或具體內網 IP
bind-address = 192.168.1.100

systemctl restart mysqld

6. 連線測試

# 主機 B 執行
mysql -h 192.168.1.100 -u app_user -p'StrongPass#2024' -e "SELECT VERSION();"

# 或測試連通性
telnet 192.168.1.100 3306
nc -zv 192.168.1.100 3306

避坑清單

  • ⚠️ 帳號 Host 必須與客戶端實際連出 IP **完全一致**(含 CIDR 寫法)。
  • ⚠️ FLUSH PRIVILEGES 5.7+ 大多操作自動生效,但手動執行無害。
  • ⚠️ 防火牆規則順序:**ACCEPT 必須在 DROP/REJECT 之前**,建議用 -I 插入頂部。
  • ⚠️ 雲伺服器(阿里云/騰訊雲/AWS)還需在**控制台安全組**放行 3306。
  • ✅ 生產環境禁用 root@%,使用專用帳號 + 最小權限 + 強密碼 + IP 限制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved