Debian MySQL网络配置方法
小樊
37
2025-12-06 21:46:52
Debian 上配置 MySQL 的网络访问
一 核心配置文件与监听地址
- 配置文件位置:Debian 常见路径为 /etc/mysql/mysql.conf.d/mysqld.cnf(或 /etc/mysql/my.cnf)。在 [mysqld] 段设置监听地址:
- 仅本机访问:bind-address = 127.0.0.1
- 监听所有 IPv4 地址:bind-address = 0.0.0.0
- 监听所有 IPv6 地址:bind-address = ::
- 如存在 skip-networking,请注释或删除该行,否则将禁用 TCP/IP 访问。
- 修改后重启服务:sudo systemctl restart mysql。
- 验证监听:执行 sudo ss -tlnp | grep 3306,应看到 0.0.0.0:3306 或 :::3306。
二 防火墙放行 3306 端口
- UFW(Debian 常用):
- 放行指定来源:sudo ufw allow from 203.0.113.10 to any port 3306
- 放行所有来源(不推荐):sudo ufw allow 3306/tcp
- nftables/iptables:
- 放行指定来源:sudo nft add rule ip filter input tcp dport 3306 ip saddr 203.0.113.10 accept
- 放行所有来源:sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
- 云服务器安全组:在控制台放行 TCP 3306,并仅允许可信网段。
三 数据库用户与权限
- 登录数据库:mysql -u root -p
- 创建远程用户并授权(示例仅开放给 203.0.113.10):
- 创建用户:CREATE USER ‘app’@‘203.0.113.10’ IDENTIFIED BY ‘StrongPass!’;
- 授权库表:GRANT ALL PRIVILEGES ON appdb. TO ‘app’@‘203.0.113.10’;*
- 全局只读示例:GRANT SELECT ON . TO ‘reporter’@‘203.0.113.0/24’;
- 刷新权限:FLUSH PRIVILEGES;
- 如需兼容旧客户端,可将认证插件调整为 mysql_native_password:
- ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘YourRootPass’; FLUSH PRIVILEGES;。
四 安全加固与加密
- 仅开放必要来源 IP,避免使用 % 通配符;必要时使用 SSH 隧道 访问:
- 本地端口转发:ssh -L 3307:localhost:3306 user@your_mysql_server_ip
- 连接测试:mysql -u app -p -h 127.0.0.1 -P 3307
- 禁用本地文件导入风险:local-infile=0
- 启用加密连接(如需要):在配置中设置 ssl=1 并重启服务。
五 验证与常见问题
- 连通性测试:
- 远程连接:mysql -u app -p -h YOUR_SERVER_IP -P 3306
- 本机监听:ss -tlnp | grep 3306
- 常见错误与处理:
- ERROR 2003 (HY000): 无法连接,检查 bind-address、skip-networking、云安全组/防火墙是否放行 3306、以及 MySQL 是否运行。
- ERROR 1130 (HY000): 主机被拒绝,检查用户主机是否为 % 或具体 IP/网段,并确认已 FLUSH PRIVILEGES。
- ERROR 1045 (28000): 认证失败,核对用户名、密码、主机及认证插件设置。