002 MySQL启动 | 错误汇总(5.7+)

mysqld.service无法识别

对于centos7版本的mysql数据库(注意,不是mariadb),执行service mysqld start后,会重定向到/bin/systemctl status mysqld.service命令,由于各种原因mysqld.service找不到的话,可以自己定义这个文件,如果系统有此文件,则会被调用,

自定义文件,在 /etc/systemd/system/mysqld.service,

[Unit]
Description=MySQL Server
After=network.target
[Service]
ExecStart=/usr/bin/mysqld --defaults-file=/etc/mysql/my.cnf --datadir=/var/lib/mysql --socket=/var/run/mysqld/mysqld.sock 
User=mysql
Group=mysql
WorkingDirectory=/usr
[Install]
WantedBy=multi-user.target

注意,User和Group分别占单独的行

mysql.service文件里的mysqld启动参数的优先级,比my.cnf中的要高,这点需要注意,尤其,--defaults-file, --datadir, --socket参数,

root用户启动mysql

如果my.cnf配置文件中,没有设定启动用户,则使用root启动service mysqld start时候,会失败,提示日志,[ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

此时,需要在my.cnf设置user=mysql,或者mysql.service中设置User。

mysql data目录受损

由于各种原因,启动之前,mysql data目录受损,导致无法启动,提示,类似如下错误,Can't open the mysql.plugin table. Please run mysql_upgrade to create it。

此时,需要将/var/lib/mysql/清空,执行如下命令即可
mysql_install_db --user=mysql --datadir=/var/lib/mysql/

mysql命令无法连接服务

当出现,Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'错误的时候,首先确保server启动,以及权限问题等,如果都确认没问题,则
ps -ef | grep mysql 看下启动脚本,

/usr/sbin/mysqld --defaults-file=/etc/my.cnf --datadir=/var/lib/mysql --socket=/var/run/mysqld/mysqld.sock

发现,--socket发生变动,那么此时,启动连接,就需要指定--socket了,

mysql --socket=/var/run/mysqld/mysqld.sock

你可能感兴趣的:(002 MySQL启动 | 错误汇总(5.7+))