Debian 9升级自8后MariaDB(MySQL)无法正常运行
解决Debian 8升级到Debian 9后MariaDB无法启动的问题
从你的报错信息来看,核心问题是MariaDB服务启动后的后置脚本/etc/mysql/debian-start执行失败(状态码203/EXEC),这直接导致服务启动失败,进而出现找不到/var/run/mysqld/mysqld.sock的错误(因为socket文件是服务正常启动后才会生成的)。下面是一步步的排查和解决方法:
第一步:定位debian-start脚本的问题
203/EXEC错误通常意味着脚本不存在、权限不足,或者依赖的命令缺失。先检查脚本的状态:
ls -l /etc/mysql/debian-start
- 如果脚本不存在:说明升级过程中MariaDB的服务包没有正确安装,需要重新部署。
- 如果脚本存在但权限不对:正常权限应该是
root:root且权限为755,修复权限后再尝试启动服务:chmod 755 /etc/mysql/debian-start systemctl start mariadb.service
第二步:重新安装MariaDB服务包(如果脚本缺失)
如果debian-start脚本不存在,大概率是升级时旧的MySQL/MariaDB包残留导致新包安装不完整,执行以下步骤:
- 彻底卸载残留的数据库服务包:
apt-get purge mariadb-server* mysql-server* - 清理无用依赖和缓存:
apt-get autoremove && apt-get autoclean - 重新安装MariaDB服务:
安装过程中会提示设置root用户密码,按照引导完成即可。apt-get install mariadb-server
第三步:检查数据库相关目录的权限
升级过程中可能会改变数据库文件或运行目录的权限,导致服务无法正常读写:
- 检查运行目录
/var/run/mysqld(socket文件所在目录):
如果目录不存在或权限不对,创建并修复:ls -ld /var/run/mysqldmkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld chmod 755 /var/run/mysqld - 检查数据库数据目录
/var/lib/mysql:
正确权限应该是ls -ld /var/lib/mysqlmysql:mysql且权限为700,修复命令:chown -R mysql:mysql /var/lib/mysql chmod 700 /var/lib/mysql
第四步:验证配置文件中的socket路径
确认MariaDB配置文件中指定的socket路径和报错中的一致:
打开主配置文件/etc/mysql/my.cnf或者子配置文件/etc/mysql/mariadb.conf.d/50-server.cnf,查找socket配置项:
socket = /var/run/mysqld/mysqld.sock
如果路径不一致,修改后保存,再重启服务:
systemctl restart mariadb.service
额外排查技巧:查看详细日志
如果以上步骤都没解决问题,查看服务的详细日志获取更多线索:
journalctl -u mariadb.service
日志里会记录更具体的错误原因,比如某个依赖库缺失、配置文件语法错误等。
内容的提问来源于stack exchange,提问作者Doraemoe
相关产品推荐
相关产品推荐

