Debian 上配置 MySQL 的网络访问
一 准备与定位配置文件
sudo systemctl status mysql。如未安装:sudo apt update && sudo apt install mysql-server。sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak。ss -lntp | grep 3306 或 sudo netstat -tulpen | grep 3306 查看是否已在 3306 端口监听。sudo ufw status;若使用 nftables:sudo nft list ruleset。以上有助于后续排错与验证。二 启用远程访问的必要修改
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnfbind-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'@'%'。sudo ufw allow from 203.0.113.10 to any port 3306sudo nft add rule inet filter input tcp dport 3306 ip saddr 203.0.113.10 accept
三 仅本地访问与加固
bind-address 设为 127.0.0.1,并确保未启用 skip-networking;重启:sudo systemctl restart mysql。sudo mysql_secure_installation 设置强密码策略、移除匿名用户、禁止远程 root 登录(如不需要)。'user'@'固定IP',少用 '%'。local-infile=0 并重启。ssl=1 或配置证书后重启)。四 验证与常见问题
ss -lntp | grep 3306(应看到 0.0.0.0:3306 或指定 IP)。mysql -u appuser -h YOUR_SERVER_IP -pbind-address 与 skip-networking、以及用户 host 是否匹配。ALTER USER 'appuser'@'203.0.113.10' IDENTIFIED WITH mysql_native_password BY 'StrongPass!';
FLUSH PRIVILEGES;
建议优先升级客户端或使用更安全的认证方式。