Ubuntu 上 SQLAdmin 连接问题的排查与修复
一 快速自检清单
sudo systemctl status mysql,若未运行则执行 sudo systemctl start mysql。sudo ufw allow 3306/tcp、sudo ufw allow 8080/tcp,必要时 sudo ufw reload。/etc/mysql/mysql.conf.d/mysqld.cnf(或 /etc/mysql/my.cnf),在 [mysqld] 下将 bind-address 设为 0.0.0.0(允许所有 IP),保存后重启:sudo systemctl restart mysql。ping 与端口探测(如 nc -vz <IP> 3306),确认路由与端口可达。二 常见故障与对应修复
systemctl status 检查并按需启动,例如 sudo systemctl start mysql。ufw 放行对应端口并 reload。bind-address 改为 0.0.0.0 并重启 MySQL。GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES;(不建议对 root 开放远程)。config.inc.php 或 sqladmin.conf)并修正。sudo apt-get update && sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev 等以补齐依赖。三 配置要点示例
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 在 [mysqld] 下
bind-address = 0.0.0.0
sudo systemctl restart mysql
sudo ufw allow 3306/tcp
sudo ufw allow 8080/tcp
sudo ufw reload
config.inc.php):$cfg['Servers'][$i]['host'] = '服务器IP或域名';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['user'] = 'your_user';
$cfg['Servers'][$i]['password'] = 'your_password';
$cfg['Servers'][$i]['auth_type'] = 'config'; // 或 cookie
mysql -uroot -p -e "GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'StrongPass!'; FLUSH PRIVILEGES;"
tail -n 50 /var/log/mysql/error.log
tail -n 50 /var/log/sqladmin/sqladmin.log
四 仍未解决时的定位思路
nc -vz <DB_HOST> 3306,若超时/拒绝,优先排查云安全组、服务器防火墙、以及 MySQL 的 bind-address 与监听地址(sudo ss -lntp | grep 3306)。mysql -h 127.0.0.1 -P 3306 -u your_user -p,若本地可连而远程不可连,多为网络/防火墙/权限问题。sudo systemctl status sqladmin、tail -n 50 /var/log/sqladmin/sqladmin.log,确认服务已监听在 0.0.0.0:8080(或配置的端口)。mysql.user 中确认存在 'your_user'@'%' 或针对具体来源 IP 的授权记录。sudo ufw disable → 测试连接 → sudo ufw enable,以快速判断是否为防火墙阻断。