CentOS7下MySQL5.7初始化报错:指定初始化但数据目录存文件(实际为空)
确认MySQL实际加载的配置文件
MySQL可能未读取你修改的my.cnf,执行以下命令查看默认配置文件加载顺序:mysqld --verbose --help | grep -A 1 "Default options"
逐个检查输出里的配置文件,确认是否有其他文件中的datadir指向了非空目录。检查systemd服务启动参数
自定义的服务脚本可能覆盖了my.cnf的配置,查看启动命令:cat /usr/lib/systemd/system/mysqld.service | grep ExecStart
确认命令里有没有额外指定--datadir或者强制初始化的参数,如有冲突调整至与my.cnf一致。排查目录隐藏文件与权限
即使/home4看起来是空的,也可能存在隐藏文件,执行:ls -la /home4/mysql/MYP015RANB/data/
如果有.开头的文件,全部删除。然后设置正确的目录权限:chown -R mysql:mysql /home4/mysql/MYP015RANB/datachmod -R 700 /home4/mysql/MYP015RANB/data清理临时文件并重启服务
卸载残留的临时文件可能干扰启动,执行:rm -rf /tmp/mysql*
重新加载systemd配置后启动服务:systemctl daemon-reloadsystemctl start mysqld手动执行初始化
如果以上步骤无效,手动指定datadir执行初始化:mysqld --initialize --user=mysql --datadir=/home4/mysql/MYP015RANB/data
初始化成功后再启动服务。
内容的提问来源于stack exchange,提问作者Cesar

