今天照着这篇文章 《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.
还不快抢沙发