温馨提示×

Debian MySQL网络设置如何操作

小樊
43
2025-12-12 20:42:11
栏目: 云计算

Debian 上配置 MySQL 的网络访问

一 准备与定位配置文件

  • 确认 MySQL 正在运行:sudo systemctl status mysql。如未安装:sudo apt update && sudo apt install mysql-server
  • 主配置文件通常为:/etc/mysql/my.cnf;Debian 的服务器段多位于:/etc/mysql/mysql.conf.d/mysqld.cnf
  • 备份当前配置:sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak
  • 使用 ss -lntp | grep 3306sudo netstat -tulpen | grep 3306 查看是否已在 3306 端口监听。
  • 注意:Debian 12 默认使用 nftables,并非 netplan;netplan 常见于 Ubuntu。若使用 UFW:sudo ufw status;若使用 nftables:sudo nft list ruleset。以上有助于后续排错与验证。

二 启用远程访问的必要修改

  • 编辑 MySQL 配置,允许监听外部地址:
    • 打开:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    • [mysqld] 段:
      • bind-address 设为服务器内网/公网 IP,或设为 0.0.0.0(监听所有 IPv4 接口);如有 IPv6 需求可用 ::
      • 确保没有 skip-networking(若存在请注释或删除)。
    • 示例:
      [mysqld]
      bind-address = 0.0.0.0
      # skip-networking
      
    • 重启生效:sudo systemctl restart mysql
  • 创建远程访问账户并授权(示例仅开放必要库):
    mysql -u root -p
    CREATE USER 'appuser'@'203.0.113.10' IDENTIFIED BY 'StrongPass!';
    GRANT ALL PRIVILEGES ON mydb.* TO 'appuser'@'203.0.113.10';
    FLUSH PRIVILEGES;
    EXIT;
    
    • 如需从任意主机连接(不建议生产):'appuser'@'%'
  • 防火墙放行 3306
    • UFW:sudo ufw allow from 203.0.113.10 to any port 3306
    • nftables(示例):
      sudo nft add rule inet filter input tcp dport 3306 ip saddr 203.0.113.10 accept
      
  • 云服务器请在安全组放行 3306/tcp(仅对可信网段开放)。

三 仅本地访问与加固

  • 仅本地访问:将 bind-address 设为 127.0.0.1,并确保未启用 skip-networking;重启:sudo systemctl restart mysql
  • 安全加固建议:
    • 运行 sudo mysql_secure_installation 设置强密码策略、移除匿名用户、禁止远程 root 登录(如不需要)。
    • 限制账户来源:优先使用 'user'@'固定IP',少用 '%'
    • 禁用本地文件读取(如业务不需要):在 [mysqld] 加入 local-infile=0 并重启。
    • 如需加密传输,启用 SSL/TLS(在配置中设置 ssl=1 或配置证书后重启)。

四 验证与常见问题

  • 本机验证监听:ss -lntp | grep 3306(应看到 0.0.0.0:3306 或指定 IP)。
  • 远程验证连接:
    • 命令行:mysql -u appuser -h YOUR_SERVER_IP -p
    • 若报 ERROR 2003 (HY000):检查云安全组/防火墙、MySQL 是否监听正确 IP、bind-addressskip-networking、以及用户 host 是否匹配。
  • 客户端兼容旧插件:如旧客户端无法认证,可临时调整用户插件(示例):
    ALTER USER 'appuser'@'203.0.113.10' IDENTIFIED WITH mysql_native_password BY 'StrongPass!';
    FLUSH PRIVILEGES;
    
    建议优先升级客户端或使用更安全的认证方式。

0