原文地址:启动mysql服务时一直提示ERROR The server quit without updating PID file_zqin0的博客-CSDN博客
centos7中使用二进制文件部署的mysql
启动mysql 服务时一直提示
ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.pid)
不管是执行 systemctl start mysqld
还是执行support-file目录下的mysql.service start
经过近1天的研究终于找到了问题所在!!!
注意:support-files目录下的mysql.server 执行的是 mysqld_safe 而不是 mysqld
使用vim查看mysql.server的内容
找到第281行 可以看出,执行参数start时,运行的是$bindir目录下的/mysqld_safe 程序
由于我是所有操作都是用root 用户执行的, (这是个坑)
而用root用户执行mysqld 跟mysqld_safe 不加--user=root参数 指定用户时会报错的
为了让mysqld_safe能过执行,需要对mysql.service文件进行一点点修改
还是在281行, 在执行mysqld_safe 时 我加入了 --user=root 参数
此时再执行 mysql.server start 终于看到了久违的SUCCESS!
再看下面的内容
此时localhost.pid 文件中保存的就是mysqld的pid
再查看 ps进程
可以看到存在2个进程mysqld_safe 与 mysqld
归根结底:出现该错误的原因就是由于我在root用户下部署导致的!!!
如果不想修改mysql.server 文件的话建议还用新建mysql 用户运行
顺便说一句:修改完mysql.server 文件后, 成功运行mysql 服务用的都是系统自带的默认参数, 因为我压根就没创建 my.cnf 文件!
启动报错跟my.cnf 文件中的配置信息也无关!
注意:pid-file文件是在系统中有mysql服务在运行时才会生成,mysql服务没有运行的情况下找不到PID文件也是正常的!!!
补充说明:
那么为什么会一直提示 ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.pid) 这个错误的
通过分析mysql.server 文件
下面是部分shell代码
再看wait_for_pid函数代码
通过注释可以看出:wait_for_pid 需要3个参数
第一个参数verb 可选值为 create | removed 创建或删除 pid-file
第二个参数pid 为mysqld 运行时的PID
第三个参数pid_file_path 为 pid-file 文件的路径
注意看184 行到199行的代码
通过注释可以看出,如果mysqld 服务没有运行的话, pid-file 文件 将不会被更新
196行调用了log_failure_msg 输出了我们熟悉的错误信息 The server quit without updating PID file (/usr/local/mysql/data/localhost.pid)
由于没有运行mysqld服务, 没有对应的PID值, 也就无法创建对应的pid文件,
因此就出现了那句 我们熟悉的 The server quit without updating PID file (/usr/local/mysql/data/localhost.pid) 错误信息
这就是为什么每次都出现那句PID file 报错信息
————————————————
版权声明:本文为CSDN博主「zqin0」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zqin0/article/details/106444580/