通用二进制部署mysql5.7.17时的报错整理

报错1:

# /etc/init.d/mysql start
Starting MySQL.The server quit without updating PID file (/usr/local/mysql/data//iZ8vb0ywcounjc3oh3rv2jZ.pid).                                                        [FAILED]

解决:显示pid文件的一般是属主属组权限的问题,赋予数据目录权限

# chown -R mysql.mysql /usr/local/mysql

 

报错2:

# /etc/init.d/mysql start
Starting MySQL.2020-02-15T02:22:28.043091Z mysqld_safe error:
 log-error set to '/usr/local/mysql/data//localhost.localdomain.err', however file don't exists. Create writable for user 'mysql'.
The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).

【还出现过路径是这样的错误/usr/local/mysql[失败]localhost.localdomain.pid;也是属主属组的问题。给权限就ok了】

出现日志和权限的问题,就是没有该日志,pid文件目录的属组属主的问题

创建该日志,赋予该目录属主属组即可解决

查看更详细的错误信息用:

systemctl status mysql或者journalctl -xe命令

分析:

报错日志中提到用户mysql。Pid文件和日志,

查看自己的服务,mysql用户已经存在了。存放日志的路径属组属主也是mysql,但是查看路径/usr/local/mysql/data下还有部分文件的属组属主不是mysql,执行 chown -R mysql.mysql /usr/local/mysql/data即可解决问题。

注意:

 /usr/local/mysql/data是mysql的数据目录。

解释:

#查看data目录属组属主已经是mysql

查看data目录下的所有文件的属主属组,发现有部分文件的属组属主是root

给data目录下所有文件的属主属组改为mysql即可解决问题

排错的其他思路:

防火墙和selinux

在网上看到一篇文章说是与selinux有关,selinux的开启会导致部分服务安装失败。可以一试。

虚拟机的selinux默认是开启的

# setenforce 0【临时关闭selinux】
# /usr/sbin/sestatus -v
Current mode:                   permissive【此处表示临时关闭selinux】【如果是enforcing,表示开启】

有关mysql.sock和引擎的问题以下这位博主做了总结


 

个人认为存在疑问的思路【亲自测试,没有奏效的思路】

网上说关于pid报错,在配置文件里给pid添加路径

# vi /etc/init.d/mysql 
 (64行) mysqld_pid_file_path=/usr/local/mysql/data/

注释掉pid参数

# vi /etc/init.d/mysql 
#mysqld_pid_file_path

解释:

因为pid文件是mysql运行时才会自动创建的文件。当mysql停止时pid文件也会自动消失。

个人觉得关于路径和注释pid参数的说法存在疑问

这是需要执行重启命令systemctl restart mysql俩次否则用 systemctl status mysql

查看mysql状态的时候还是会显示错误,(这时的错误是缓存的,多重启3次就好了)

中间还出现过ip丢失的问题,不过重启网卡systemctl  restart network后就好了

启动mysql后会自动创建3个文件

-rw-rw---- 1 root  root         6 2月  17 09:05 mysqld_safe.pid
-rw-r----- 1 mysql mysql        6 2月  17 09:05 localhost.localdomain.pid
-rw-r----- 1 mysql mysql 12582912 2月  17 09:05 ibtmp1