MySQL启动报
我有两台控制器,在重启之后发现mysql服务都起不来了。
在其中⼀台控制器上开始查原因:
在/etc/myf配置⽂件中可以看到如下字样:
[mysqld_safe]
log-error=/usr/local/mysql/mysqlerr.log
pid-file=/usr/local/mysql/mysqld.pid
mysqld=mysqld
log-error的值就是mysql的⽇志路径,去检查了下mysqlerr.log的内容,发现说是controller-1.pid的问题
mysqld_safe mysqld from pid file /data/mysql/data/controller-1.pid ended
然⽽并不知道这个⽂件究竟哪⾥有问题了,于是去⽹上查资料,说直接删除myf⽂件后重启mysql就可以,试了⼀下,果然成功了。
exited
在将同样的解决⽅法⽤在另⼀台控制器上,欣赏⼀下结果:
>> systemctl status mysqld
mysqld.service - LSB: start and stop MySQL
Loaded: loaded (/etc/rc.d/init.d/mysqld)
active (running) since Tue 2018-04-10 15:18:19 CST; 1s ago
Active: active (running)
Process: 21275 ExecStop=/etc/rc.d/init.d/mysqld stop (code=exited, status=0/SUCCESS)
Process: 22841 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/mysqld.service
├─22853 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-
file=/data/mysql/data/
└─23330 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/
Apr 10 15:18:19 controller-2 mysqld[22841]: Starting MySQL SUCCESS!
Apr 10 15:18:19 controller-2 systemd[1]: Started LSB: start and stop MySQL.
很开⼼,然⽽!当我连接数据库的时候:
>> mysql -uroot -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
(2)
尴尬了,这是为什么?
查看⼀下/etc/rc.d/init.d/mysqld的状态:
>> /etc/rc.d/init.d/mysqld status
ERROR! MySQL is not running, but PID file exists
它说mysql根本没跑起来,find⼀下mysql.sock⽂件,果然没有。
⽹上有⼈说mysql.sock套接字⽂件可以简单地通过重启服务器重新创建得到它,然⽽重启之后还是没啥变化,mysql.sock没有⽣成出来。接下来了解到mysql.sock是⼀个临时⽂件,在mysql启动时会⾃动⽣成,我的服务器未启动,⾃然就没有mysql.sock⽂件。
到这⾥思路开始阻塞了,不知道该怎么办,只能继续查看⽇志⽂件,妄图到⼀点⼉蛛丝马迹,正在看着mysqlerr.log⽂件的内容,往上翻啊翻,真的让我看到⼀个报错信息,在mysql启动的最开始阶段,报了个如下的错误:
[ERROR] Can't start server : Bind on unix socket: Permission denied
⼀看是权限的问题,但是我已经把mysql⽤户/组权限给了/data/mysql/⽂件夹下的所有⽂件了,那就不是这⼀块的权限问题,那会是哪⼉的权限问题呢?
再次find / -name mysql⼀下,哦,发现好多个,挨个简直太⿇烦了,于是直接去⽹上查,果然就到了,于是我就对/var/lib/mysql/⽂件夹赋予权限:
chown -R mysql:mysql /var/lib/mysql/
再次重启mysqld服务,这回终于能连上mysql了。
后来发现/var/lib/mysql/这个⽂件夹就是⽤来放置mysql.sock套接字⽂件的地⽅,没有权限,难怪连不上数据库。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。