Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1127|回复: 0

[默认分类] CentOS 7下mysqld服务启动失败终极解决方案

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2020-8-3 16:49:43 | 显示全部楼层 |阅读模式
    启动mysqld服务失败,报错如下:

    1. [root@LCM01GCM01 ~]# service mysqld start   
    2. Starting mysqld (via systemctl):  Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
    3.                                                            [FAILED]
    复制代码


    既然有了提示,先看下有什么帮助没有

    1. [root@LCM01GCM01 ~]# systemctl status mysqld.service
    2. Loaded: loaded (/etc/rc.d/init.d/mysqld)
    3.    Active: failed (Result: exit-code) since Wed 2016-01-20 18:26:57 CST; 40s ago
    4.      Docs: man:systemd-sysv-generator(8)
    5.   Process: 2979 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1/FAILURE)
    6. Jan 20 18:26:56 spark01 systemd[1]: Starting SYSV: MySQL database server....
    7. Jan 20 18:26:57 spark01 mysqld[2979]: MySQL Daemon failed to start.
    8. Jan 20 18:26:57 spark01 mysqld[2979]: Starting mysqld:  [FAILED]
    9. Jan 20 18:26:57 spark01 systemd[1]: mysqld.service: control process exited, code=exited status=1
    10. Jan 20 18:26:57 spark01 systemd[1]: Failed to start SYSV: MySQL database server..
    11. Jan 20 18:26:57 spark01 systemd[1]: Unit mysqld.service entered failed state.
    12. Jan 20 18:26:57 spark01 systemd[1]: mysqld.service failed.
    复制代码



    1. [root@LCM01GCM01 ~]# journalctl -xe
    2. --
    3. -- Unit session-2.scope has begun starting up.
    4. Jan 20 18:26:48 spark01 sshd[2916]: pam_unix(sshd:session): session opened for user spark by (uid=0)
    5. Jan 20 18:26:52 spark01 su[2944]: (to root) spark on pts/1
    6. Jan 20 18:26:52 spark01 su[2944]: pam_unix(su-l:session): session opened for user root by spark(uid=1000)
    7. Jan 20 18:26:56 spark01 polkitd[909]: Registered Authentication Agent for unix-process:2974:117137 (system bus name :1.25
    8. Jan 20 18:26:56 spark01 systemd[1]: Starting SYSV: MySQL database server....
    9. -- Subject: Unit mysqld.service has begun start-up
    10. -- Defined-By: systemd
    11. -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    12. --
    13. -- Unit mysqld.service has begun starting up.
    14. Jan 20 18:26:57 spark01 mysqld[2979]: MySQL Daemon failed to start.
    15. Jan 20 18:26:57 spark01 mysqld[2979]: Starting mysqld:  [FAILED]
    16. Jan 20 18:26:57 spark01 systemd[1]: mysqld.service: control process exited, code=exited status=1
    17. Jan 20 18:26:57 spark01 systemd[1]: Failed to start SYSV: MySQL database server..
    18. -- Subject: Unit mysqld.service has failed
    19. -- Defined-By: systemd
    20. -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    21. --
    22. -- Unit mysqld.service has failed.
    23. --
    24. -- The result is failed.
    25. Jan 20 18:26:57 spark01 systemd[1]: Unit mysqld.service entered failed state.
    26. Jan 20 18:26:57 spark01 systemd[1]: mysqld.service failed.
    27. Jan 20 18:26:57 spark01 polkitd[909]: Unregistered Authentication Agent for unix-process:2974:117137 (system bus name :1.
    复制代码


    然而,好像这些信息对我们来说并没有什么用处,什么守护进程没启动,我们也不能知如何去启动这些,这个时候我们查看一下mysql自带的告警日志,路径一般在/var/log/mysqld.log下面

    1. [root@LCM01GCM01 ~]# tail -200f  /var/log/mysqld.log
    2. 2018-12-07 T10:00:19.935771Z 0 [ERROR] /usr/sbin/mysqld: Can"t create/write to file "/var/run/mysqld/mysqld.pid" (Errcode: 2 - No such file or directory)
    3. 2018-12-07T10:00:19.935795Z 0 [ERROR] Can"t start server: can"t create PID file: No such file or directory
    4. 181207 18:00:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
    复制代码


    这个时候我们就明白了,/var/run/mysqld/这个目录不存在,wu,查找下确实没有这个文件。这里我们有两种解决方案
    第一种自己创建 /var/run/mysqld/ 这个目录,重新启动mysqld服务

    1. [root@LCM01GCM01 ~]# mkdir -p /var/run/mysqld/
    2. [root@LCM01GCM01 ~]# service mysqld start   
    3. Starting mysqld (via systemctl):  Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
    4.                                                            [FAILED]
    复制代码


    依旧报错,重新查看告警日志,有以下输出

    1. 2018-12-070T10:28:37.183387Z 0 [ERROR] /usr/sbin/mysqld: Can"t create/write to file "/var/run/mysqld/mysqld.pid" (Errcode: 13 - Permission denied)
    2. 2018-12-070T10:28:37.183431Z 0 [ERROR] Can"t start server: can"t create PID file: Permission denied
    3. 181207 18:28:37 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
    4. 181207 18:32:06 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    复制代码


    原来,/var/run/mysqld/的属主和属组还是root,mysql并不能在其中创建文件,后修改该目录的属主和属组,启动OK。

    1. [root@LCM01GCM01 ~]# ls -ld /var/run/mysqld/
    2. drwxr-xr-x 2 root root 40 Jan 20 18:28 /var/run/mysqld/
    3. [root@LCM01GCM01 ~]# chown mysql.mysql /var/run/mysqld/
    4. [root@LCM01GCM01~]# service mysqld start
    5. Starting mysqld (via systemctl):                           [  OK  ]
    复制代码


    上面第一种解决方案为临时性的方案,你会发现当虚拟机reboot的话,又会启动不成功,那个目录又不删除了,因此我们修改一下存放mysqld.pid的目录,有两个配置文件

    1. vi  /etc/my.cnf
    2. socket=/var/lib/mysql/mysql.sock
    3. # Disabling symbolic-links is recommended to prevent assorted security risks
    4. symbolic-links=0
    5. log-error=/var/log/mysqld.log
    6. pid-file=/createByhujian/mysqld/mysqld.pid
    复制代码



    1. vi  /etc/init.d/mysqld
    2. get_mysql_option mysqld datadir "/var/lib/mysql"
    3. datadir="$result"
    4. get_mysql_option mysqld socket "$datadir/mysql.sock"
    5. socketfile="$result"
    6. get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
    7. errlogfile="$result"
    8. get_mysql_option mysqld_safe pid-file "/createByhujian/mysqld/mysqld.pid"
    9. mypidfile="$result"
    复制代码


    红色的部分是我自己在根目录下创建的目录 /createByhujian/mysqld

    1. mkdir -p /createByhujian/mysqld
    2. chown mysql.mysql /createByhujian/mysqld
    复制代码


      
    重启mysqld服务成功,一劳永逸
    有什么问题可以下方留言讨论哦!
      
      
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-27 03:58 , Processed in 0.360568 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表