Debian MySQL常见问题及解答
原因:可能因配置文件错误、权限不足、磁盘空间耗尽或数据库损坏导致。
解决方法:
sudo systemctl status mysql,确认服务是否处于“active (running)”状态;sudo tail -f /var/log/mysql/error.log(或journalctl -xe),定位具体错误(如配置文件语法错误、数据目录无法访问);/var/lib/mysql)归属正确,执行sudo chown -R mysql:mysql /var/lib/mysql;df -h检查磁盘使用率,删除无用文件释放空间(建议保留至少10%可用空间);mysqlcheck工具,执行sudo mysqlcheck -u root -p --all-databases --auto-repair。原因:默认仅允许本地连接(bind-address限制)、防火墙拦截或MySQL未授权远程访问。
解决方法:
/etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-address = 127.0.0.1,改为bind-address = 0.0.0.0(允许所有IP连接);sudo systemctl restart mysql;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;,然后FLUSH PRIVILEGES;;sudo ufw allow 3306/tcp(若使用ufw防火墙)。原因:初始安装未设置密码、密码遗忘或需要更换密码。
解决方法:
sudo systemctl stop mysql;sudo mysqld_safe --skip-grant-tables &;mysql -u root;FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
exit,然后sudo systemctl restart mysql。原因:数据库、表或连接的字符集未统一(如默认latin1)。
解决方法:
/etc/mysql/my.cnf,在[client]、[mysql]和[mysqld]部分均添加:default-character-set = utf8mb4
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
sudo systemctl restart mysql;test_db为例):ALTER DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE test_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
原因:系统软件源未更新、依赖包缺失或版本冲突。
解决方法:
sudo apt update;sudo apt --fix-broken install(自动安装缺失的依赖);sudo apt clean,然后sudo apt install mysql-server(或指定版本,如mysql-server-8.0)。max_connections)原因:并发请求过多,超过MySQL配置的最大连接数(默认通常为151)。
解决方法:
SHOW VARIABLES LIKE 'max_connections';;SET GLOBAL max_connections = 500;;/etc/mysql/mysql.conf.d/mysqld.cnf,在[mysqld]部分添加max_connections = 500,然后重启服务;原因:网络中断、配置不一致(如server-id重复)、主从数据不一致或权限不足。
解决方法:
ping测试);server-id必须唯一([mysqld]部分server-id=1主、server-id=2从);REPLICATION SLAVE权限(主服务器执行GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;);pt-table-checksum检查差异,pt-table-sync同步数据(需安装Percona Toolkit)。