在cengtos 7.9 下安装MySQL8.0.23的过程中出现诸多错误,记录如下。
安装过程已记录在前一篇博客中,linux下安装MySQL。
启动mysql的时候会出现各种各样的错误,大部分都是由于配置文件没能正确配置导致的。下面贴一下本文安装的过程中出现了的几种错误:
1 ERROR! The server quit without updating PID file (/opt/mysql/data/test02.pid).
这是一个很常见的错误,造成错误的原因有多种,所以需要先去安装日志的路径下查看一下具体的错信息,
cat /opt/mysql/data/err.log
可以看出,这里面提示出现了两个错误,先解决第一个:
Different lower_case_table_names settings for server ('0') and data dictionary ('1').
MySQL8.0新增data dictionary的概念,数据初始化的时候在Linux下默认使用lower-case-table-names=0参数,数据库启动的时候读取my.cnf文件中的值。若二者值不一致则在MySQL的错误日志中记录报错信息。
我们在初始化的时候已经指定了lower-case-table-names=0
,所以,为了和my.cnf保持一致,需要在/etc/my.cnf 的mysqld下添加lower-case-table-names=0
重新启动mysql: ./support-files/mysql.server status
能正常启动了,看一下日志,发现两个错误都已经已经消失
如果执行了上面的操作步骤,且日志里面仍然存在Data Dictionary initialization failed
错误,应该是有安装程序重复导致的,可以删除整个data目录试一下。如果删除之后还是会出现这个问题,那有可能是在别的地方还有安装程序,如果找不到这些残留文件在哪里,建议将整个安装目录删除,然后重新安装。我在安装的过程中遇到过几回这种错误,都是通过这种方式解决的,但是如果data文件夹下存在数据,那还是建议先确定哪些文件重复了再删除,或者另寻他法。
但在安装的过程中也出现过Data Dictionary initialization failed
单独存在的情况,通过删除data目录的方式也能解决。
这种错误的原因很多,解决的时候要多看日志,判断到底是哪种原因导致的,对症下药。
2 ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
这是因为没有修改/opt/mysql/support-files/mysql.server脚本文件里面的安装路径导致的,执行自带的脚本时,会到脚本指定的路径下(/usr/local/mysql/bin)寻找安装需要的东西,由于我们统一安装在/opt/mysql目录下,以会找不到/usr/local/mysql/bin,需要把配置文件里面对应的配置文件修改成实践的安装路径。
66 basedir=/opt/mysql
67 bindir=/opt/mysql/bin
68 if test -z "$datadir"
69 then
70 datadir=/opt/mysql/data
71 fi
72 sbindir=/opt/mysql/bin
73 libexecdir=/opt/mysql/bin
74 else
3 mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
这是因为执行脚本跳到/etc/my.cnf中默认目录去了,该目录根本不存在,所以需要修改一下路径。/etc/my.cnf中有两处会影响到日志文件,第2行和第12行
1 [mysqld]
2 datadir=/opt/mysql/data
......
11 [mysqld_safe]
12 log-error=/opt/mysql/data/err.log
4 Directory '/var/lib/mysql' for UNIX socket file don't exists.
修改/etc/my.cnf中socket的路径就行
1 [mysqld]
2 datadir=/opt/mysql/data #
3 socket=/opt/mysql/mysql.sock
5[ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2021-07-01T18:30:35.220806Z 0 [ERROR] [MY-013236] [Server] The designated data directory /opt/mysql/data/ is unusable. You can remove all files that the server added to it.
这是因为data目录有残留文件,需要删除后重新初始化和启动