systemctl start mysqld 失败问题

工具 2019-05-04 3732 字 4970 浏览 点赞

今天照着这篇文章 《CentOS 7 下安装 MySQL 5.7》在自己的 centos7 里装了 mysql 。接着照着教程,以不检查权限的方式启动 mysqld(mysqld --user=root --skip-grant-tables &),为 root 用户设置了初始密码。

退出 mysql 后,我通过 kill 强杀了 mysqld 在运行的进程(ps -fef | grep mysqld 获取 pid),想用 systemctl start mysqld 启动 mysqld,但失败。

此时 systemctl status mysqld 检查状态,输出如下:

root@hui:~$ systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sat 2019-05-04 17:06:06 CST; 6s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 7032 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)
  Process: 7009 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)

May 04 17:06:03 hui systemd[1]: Starting MySQL Server...
May 04 17:06:04 hui mysqld[7032]: Initialization of mysqld failed: 0
May 04 17:06:04 hui systemd[1]: mysqld.service: control process exited, code=exited status=1
May 04 17:06:06 hui systemd[1]: Stopped MySQL Server.
May 04 17:06:06 hui systemd[1]: Unit mysqld.service entered failed state.
May 04 17:06:06 hui systemd[1]: mysqld.service failed.

对我而言,是没有半点帮助的信息。最后在这篇文章中《CentOS 7下MySQL服务启动失败的解决思路》 找到解决思路。如果你不想去看,我可以在这里总结一下,就是:请去 mysql 的日志文件寻找答案。

首先,找到 mysqld 使用的配置文件。一般来说,在以下几个路径中:

root@hui:~$ mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

我的配置文件是 /etc/my.cnf ,打开之后找 log-error ,其对应的路径就是错误日志所在:

log-error=/var/log/mysqld.log

然后找到了失败原因(Could not open unix socket lock file /var/lib/mysql/mysql.sock.lock.):

2019-05-04T09:05:22.619471Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2019-05-04T09:05:22.619557Z 0 [Note] IPv6 is available.
2019-05-04T09:05:22.619575Z 0 [Note]   - '::' resolves to '::'; 
2019-05-04T09:05:22.619646Z 0 [Note] Server socket created on IP: '::'. 
2019-05-04T09:05:22.619705Z 0 [ERROR] Could not open unix socket lock file /var/lib/mysql/mysql.sock.lock.
2019-05-04T09:05:22.619714Z 0 [ERROR] Unable to setup unix socket lock file. 
2019-05-04T09:05:22.619720Z 0 [ERROR] Aborting

mysql.sock.lock 这个文件不能打开。我看了下,发现这个文件是存在的。存在也不能打开?那估计是没有权限的问题。ll 一下,发现这个文件是 root 用户 root 的组,现在改为 mysql 用户 mysql 组。

root@hui:~$ ll /var/lib/mysql/mysql.sock.lock                                                                                         
-rw-------. 1 root root 5 May  4 16:46 /var/lib/mysql/mysql.sock.lock

root@hui:~$ chown mysql.mysql /var/lib/mysql/mysql.sock.lock  # 修改所属

好了,大功告成!

root@hui:~$ systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-05-04 17:12:05 CST; 27min ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 7715 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 7693 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 7718 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─7718 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

May 04 17:12:03 hui systemd[1]: Starting MySQL Server...
May 04 17:12:05 hui systemd[1]: Started MySQL Server.


本文由 Guan 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论