温馨提示×

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-addressskip-networking、云安全组/防火墙是否放行 3306、以及 MySQL 是否运行。
    • ERROR 1130 (HY000): 主机被拒绝,检查用户主机是否为 % 或具体 IP/网段,并确认已 FLUSH PRIVILEGES
    • ERROR 1045 (28000): 认证失败,核对用户名、密码、主机及认证插件设置。

0