看着网上那些一篇文章搬过去搬过来的cs,搜了半天一点有用信息都没有,牛头不对马嘴,记录一下我遇到的问题,希望对有问题的人有帮助。
不说废话了。
遇到的大概错误如果有File ‘/usr/local/mysql/data/auto.cnf’ not found (OS errno 13 - Permission denied) Plugin mysqlx reported: ‘Setup of socket: ‘/tmp/mysqlx.sock’ failed, can’t open lock file /tmp/mysqlx.sock.lock’
尤其是这个OS errno 13 - Permission denied标识的
再来就是什么各种localhost.localdomain.pid找不到,什么xxx找不到,创建失败。什么文件无法打开这类的
一句话就是权限问题,
这里我给出的办法是my.cnf配置指定用户比如mat,和在–initialize时–user指定的要一致,或者–initialize时就别加–user。否则会造成用户不一样,my.cnf没配置的话就默认是mysql,(不想配置的话,可以默认就用mysql用户去启动)在启动服务时会造成各种文件找不到,没权限等问题.当然如果你已经启动失败了,需要删除已经生成的文件避免再次因为权限冲突,如/data文件夹,mysql.sock这个东西一般在/tmp/下
以下是给遇到问题的朋友一种思路
第一步当然是解压下载的mysql,解压后在mysql下,然后需要在/etc/my.cnf配置datadir和basedir。在–initialize后面指定也可以如./bin/mysqld --initialize --user=mat --datadir=xxx --basedir=xxx,这不是错误的关键,所以接着往下看
执行./bin/mysqld --initialize --user=mat
–user就是填你想要创mysql的linux用户,这就是后面出现各种权限错误的主要源头。我这里随便取了一个mat。然后执行成功。如下,这一步只是在data文件下配置了各种数据文件。
这里如果执行失败,有可能是你的–initialize打错了,如下,这里要注意
然后把support-files下的mysql.server转到/etc/init.d/mysql下作为service服务启动。
然后执行service mysql start
然后一系列错误就来了。你大概率会碰见如下的图,类似的也一样。
Starting MySQL.Logging to ‘/usr/local/mysql/data/log.err’.
ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
遇见这里,首先查看日志,这里的log.err是/etc/my.cnf配置的log输出文件,名字随便取的。
当我们打开文件时并没有这个文件log.err。
那大概率就是创建不了,没权限,
执行ls -ld data
会发现是mat创建的也就是我们初始化mysql时指定的用户,初始化后所有的文件都是由mat创建的,当我们执行service mysql start时也会在data文件夹下创建文件,就比如这个log.err文件,现在创建不了,就说明这个文件并不是mat创建的,现在我们把这个文件夹开启所有权限,chmod 777 data
再执行后看data文件夹下log.err就有了
看看这个log是谁创建的,mysql创建的。这就是为什么log.err一直找不到的原因,因为mysql和mat彼此权限冲突了。
观察log.err
经典的not found (OS errno 13 - Permission denied)
其实到这里问题已经解决了,剩下什么乱起八糟的文件找不到创建不了,多半就是权限不够。那就是用户配置的不到位,比如初始化的时候指定–user,但是你没有在my.cnf中配置,就会造成在启动服务的时候和初始化是两个用户,在创建时会彼此造成权限冲突,给人一种找不到文件但是文件明明又在的错觉。
我这里重新配置了一下在my.cnf里也配置的user=mat,启动之后。然后log.err正常生成了,这个错误就简单了
说的是 Plugin mysqlx reported: ‘Setup of socket: ‘/tmp/mysqlx.sock’ failed, can’t open lock file /tmp/mysqlx.sock.lock’
mysql.sock找不到,直接ls -ld去看就知道这个玩意是mysql生成的,也就是刚刚我们还没改配置的时候启动生成的。删了再启动
启动成功。