service mysql start 启动失败,日志报mysqld: File ‘./bin.index‘ not found (OS errno 13 - Permission denied)
解决方式: chown mysql:mysql -R /opt/apps/data/mysqldata
参考博客:
服务器因断电停机,MySQL未设置自启动,需手动重启
查看MySQL进程,确定进程不存在
[root@localhost ~]# ps -ef | grep mysql
root 2264 22896 0 09:14 pts/3 00:00:00 grep --color=auto mysql
启动MySQL
[root@localhost ~]# service mysql start
Starting MySQL SUCCESS!
本以为启动成功,然鹅并没有
[root@localhost ~]# ps -ef | grep mysql
root 1083 22896 0 09:27 pts/3 00:00:00 grep --color=auto mysql
并且一系列操作都无法启动,还报错
[root@localhost mysql]# service mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/opt/apps/tmp/mysql/mysqld.pid).
[root@localhost mysql]# service mysql stop
ERROR! MySQL server PID file could not be found!
查看/opt/apps/tmp/mysql/mysqld.pid文件
[root@localhost mysql]# cd /opt/apps/tmp/mysql/
[root@localhost mysql]# ll
总用量 8
-rw------- 1 root root 5 3月 30 15:18 mysql.sock.lock
srwxrwxrwx 1 root root 0 3月 30 15:18 mysqlx.sock
-rw------- 1 root root 6 3月 30 15:18 mysqlx.sock.lock
并无mysqld.pid文件
备份mysql.sock.lock, mysqlx.sock.lock文件后删除
[root@localhost mysql]# cp mysql.sock.lock mysqlx.sock.lock /home/
[root@localhost mysql]# rm -rf mysql.sock.lock mysqlx.sock.lock
[root@localhost mysql]# ll
总用量 0
srwxrwxrwx 1 root root 0 3月 30 15:18 mysqlx.sock
启动,依然不行
[root@localhost mysql]# service mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/opt/apps/tmp/mysql/mysqld.pid).
[root@localhost mysql]# ps -ef | grep mysql
root 28073 22896 0 09:52 pts/3 00:00:00 grep --color=auto mysql
还原后查看mysql.sock.lock, mysqlx.sock.lock文件
[root@localhost mysql]# cat mysql.sock.lock
9676
[root@localhost mysql]# cat mysqlx.sock.lock
X9676
新建mysqld.pid文件,内容为9676
[root@localhost mysql]# vi mysqld.pid
[root@localhost mysql]# ll
总用量 8
-rw-r--r-- 1 root root 0 4月 2 09:55 mysqld.pid
-rw------- 1 root root 5 4月 2 09:53 mysql.sock.lock
srwxrwxrwx 1 root root 0 3月 30 15:18 mysqlx.sock
-rw------- 1 root root 6 4月 2 09:53 mysqlx.sock.lock
启动,依然无效
[root@localhost mysql]# /etc/init.d/mysql start
Starting MySQL SUCCESS!
[root@localhost mysql]# ps -ef | grep mysql
root 1023 22896 0 09:57 pts/3 00:00:00 grep --color=auto mysql
此时的我有点小崩溃。。。
没办法,开始找日志文件位置,因为数据库并非本人安装,常规安装路径下有没有日志文件,说明安装时日志文件指向路径做过更改
查看/etc/my.cnf
[root@localhost apps]# cat /etc/my.cnf
[mysqld]
。。。
mysqlx_socket = /opt/apps/tmp/mysql/mysqlx.sock
datadir = /opt/apps/data/mysqldata
socket = /opt/apps/tmp/mysql/mysql.sock
pid-file = /opt/apps/tmp/mysql/mysqld.pid
log-error = error.log
slow-query-log = 1
slow-query-log-file = slow.log
long_query_time = 0.2
log-bin = bin.log
relay-log = relay.log
。。。
可以看到日志文件log-error=error.log,说明在同级目录下,但是与哪个文件同级无法确定,先去数据存储目录下看看
[root@localhost apps]# cd /opt/apps/data/mysqldata
[root@localhost mysqldata]# ll
总用量 1187696
-rw-r----- 1 mysql mysql 56 9月 28 2020 auto.cnf
-rw-r----- 1 mysql mysql 564958808 3月 16 10:03 bin.000014
-rw-r----- 1 root root 3858980 3月 17 02:05 bin.000015
-rw-r----- 1 root root 99555083 3月 30 15:18 bin.000016
-rw-r----- 1 root root 196 3月 30 15:19 bin.000017
-rw-r----- 1 root root 196 3月 30 15:19 bin.000018
-rw-r----- 1 root root 15713352 4月 1 18:59 bin.000019
-rw-r----- 1 root root 78 3月 30 15:19 bin.index
-rwxrwxrwx. 1 mysql mysql 1680 7月 6 2020 ca-key.pem
-rwxrwxrwx. 1 mysql mysql 1112 7月 6 2020 ca.pem
-rwxrwxrwx. 1 mysql mysql 1112 7月 6 2020 client-cert.pem
-rwxrwxrwx. 1 mysql mysql 1680 7月 6 2020 client-key.pem
drwxrwxrwx. 2 mysql mysql 4096 7月 6 2020 cluster_manager
drwxrwxrwx. 2 mysql mysql 20480 4月 1 14:21 datengxia
-rwxrwxrwx. 1 mysql mysql 149952 4月 2 10:01 error.log
-rw-r----- 1 mysql mysql 61065 11月 2 14:59 ib_buffer_pool
-rwxrwxrwx. 1 mysql mysql 12582912 4月 1 18:59 ibdata1
-rwxrwxrwx. 1 mysql mysql 50331648 4月 1 18:59 ib_logfile0
-rwxrwxrwx. 1 mysql mysql 50331648 4月 1 18:59 ib_logfile1
-rw-r----- 1 root root 12582912 4月 1 18:14 ibtmp1
drwxrwxrwx. 2 mysql mysql 4096 7月 6 2020 mysql
-rwxrwxrwx. 1 mysql mysql 30408704 4月 1 18:50 mysql.ibd
drwxrwxrwx. 2 mysql mysql 4096 7月 6 2020 performance_schema
-rwxrwxrwx. 1 mysql mysql 1676 7月 6 2020 private_key.pem
-rwxrwxrwx. 1 mysql mysql 452 7月 6 2020 public_key.pem
-rwxrwxrwx. 1 mysql mysql 1112 7月 6 2020 server-cert.pem
-rwxrwxrwx. 1 mysql mysql 1676 7月 6 2020 server-key.pem
-rwxrwxrwx. 1 mysql mysql 283240902 4月 1 18:29 slow.log
drwxrwxrwx. 2 mysql mysql 4096 1月 28 16:11 small_reservoir
drwxrwxrwx. 2 mysql mysql 4096 7月 6 2020 sys
drwxrwxrwx. 2 mysql mysql 4096 9月 18 2020 ulanqab
-rwxrwxrwx. 1 mysql mysql 46137344 4月 1 18:59 undo_001
-rwxrwxrwx. 1 mysql mysql 46137344 4月 1 18:59 undo_002
很幸运,日志文件也在这,打开日志文件error.log
[root@localhost mysqldata]# cat error.log
...
2021-04-02T09:55:16.214463+08:00 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.12) starting as process 31378
mysqld: File './bin.index' not found (OS errno 13 - Permission denied)
2021-04-02T09:55:16.217040+08:00 0 [ERROR] [MY-010119] [Server] Aborting
2021-04-02T09:55:16.217143+08:00 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.12) MySQL Community Server - GPL.
2021-04-02T09:57:03.662034+08:00 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.12) starting as process 870
mysqld: File './bin.index' not found (OS errno 13 - Permission denied)
2021-04-02T09:57:03.664942+08:00 0 [ERROR] [MY-010119] [Server] Aborting
2021-04-02T09:57:03.665101+08:00 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.12) MySQL Community Server - GPL.
2021-04-02T10:01:18.282773+08:00 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.12) starting as process 5176
mysqld: File './bin.index' not found (OS errno 13 - Permission denied)
2021-04-02T10:01:18.285592+08:00 0 [ERROR] [MY-010119] [Server] Aborting
2021-04-02T10:01:18.285696+08:00 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.12) MySQL Community Server - GPL.
可以看到,最后的日志信息mysqld: File './bin.index' not found (OS errno 13 - Permission denied)
没找到./bin.index,因为没有权限。
这个bin.index存放的是bin.log的文件名列表
[root@localhost mysqldata]# cat bin.index
./bin.000014
./bin.000015
./bin.000016
./bin.000017
./bin.000018
./bin.000019
bin.log是mysql的备份文件,用来恢复数据的。
刚看到这个信息时,觉得有点奇怪,bin.index文件在哪,为啥没权限,我是root用户啊,怎么会没有权限呢。
然后想起来刚刚的数据存储目录下好像有一堆bin文件,就查看一下
[root@localhost mysqldata]# ll
总用量 1187696
-rw-r----- 1 mysql mysql 56 9月 28 2020 auto.cnf
-rw-r----- 1 mysql mysql 564958808 3月 16 10:03 bin.000014
-rw-r----- 1 root root 3858980 3月 17 02:05 bin.000015
-rw-r----- 1 root root 99555083 3月 30 15:18 bin.000016
-rw-r----- 1 root root 196 3月 30 15:19 bin.000017
-rw-r----- 1 root root 196 3月 30 15:19 bin.000018
-rw-r----- 1 root root 15713352 4月 1 18:59 bin.000019
-rw-r----- 1 root root 78 3月 30 15:19 bin.index
-rwxrwxrwx. 1 mysql mysql 1680 7月 6 2020 ca-key.pem
...
可以看到是有bin.index,那就是权限问题,但是为啥我是root用户,访问权限也是640,为啥说我没权限呢?难道我不是root用户?(开始了自我怀疑,因为ssh工具是保存用户密码的,太长时间了,说不定我真记错了呢)
[root@localhost bin]# su root
[root@localhost etc]# sudo service mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/opt/apps/tmp/mysql/mysqld.pid).
可以看到并没有啥用
那这个权限到底是啥意思呢?
实在没办法,只能找大佬了,百度一圈,从几个博客中理解了这个权限是啥意思了(代表性博客文章:mysqld: File ‘./mysql-bin.index’ not found (Errcode: 13 - Permission denied), MySQL启动失败 mysqld: File ‘./mysql-bin.index’ not found (Errcode: 13 - Permission denied)),这个权限指的是mysql启动命令所属为mysql用户组,而我们可以看一下数据存储目录下bin.index文件已经所有的bin.log文件所属用户组皆为root:root,所以这就导致了无权限问题,我无法启动mysql。
既然知道问题所在,那就简单了
将这些文件所属用户组全部改为mysql:mysql即可
[root@localhost mysqldata]# chown mysql:mysql -R /opt/apps/data/mysqldata
即:将mysql:mysql用户组权限赋予数据存储目录下所有文件
[root@localhost mysqldata]# ll
总用量 1187700
-rw-r----- 1 mysql mysql 56 9月 28 2020 auto.cnf
-rw-r----- 1 mysql mysql 564958808 3月 16 10:03 bin.000014
-rw-r----- 1 mysql mysql 3858980 3月 17 02:05 bin.000015
-rw-r----- 1 mysql mysql 99555083 3月 30 15:18 bin.000016
-rw-r----- 1 mysql mysql 196 3月 30 15:19 bin.000017
-rw-r----- 1 mysql mysql 196 3月 30 15:19 bin.000018
-rw-r----- 1 mysql mysql 15713352 4月 1 18:59 bin.000019
-rw-r----- 1 mysql mysql 78 3月 30 15:19 bin.index
-rwxrwxrwx. 1 mysql mysql 1680 7月 6 2020 ca-key.pem
-rwxrwxrwx. 1 mysql mysql 1112 7月 6 2020 ca.pem
-rwxrwxrwx. 1 mysql mysql 1112 7月 6 2020 client-cert.pem
-rwxrwxrwx. 1 mysql mysql 1680 7月 6 2020 client-key.pem
drwxrwxrwx. 2 mysql mysql 4096 7月 6 2020 cluster_manager
drwxrwxrwx. 2 mysql mysql 20480 4月 1 14:21 datengxia
-rwxrwxrwx. 1 mysql mysql 155208 4月 2 10:29 error.log
-rw-r----- 1 mysql mysql 61065 11月 2 14:59 ib_buffer_pool
-rwxrwxrwx. 1 mysql mysql 12582912 4月 1 18:59 ibdata1
-rwxrwxrwx. 1 mysql mysql 50331648 4月 1 18:59 ib_logfile0
-rwxrwxrwx. 1 mysql mysql 50331648 4月 1 18:59 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 4月 1 18:14 ibtmp1
drwxrwxrwx. 2 mysql mysql 4096 7月 6 2020 mysql
-rwxrwxrwx. 1 mysql mysql 30408704 4月 1 18:50 mysql.ibd
drwxrwxrwx. 2 mysql mysql 4096 7月 6 2020 performance_schema
-rwxrwxrwx. 1 mysql mysql 1676 7月 6 2020 private_key.pem
-rwxrwxrwx. 1 mysql mysql 452 7月 6 2020 public_key.pem
-rwxrwxrwx. 1 mysql mysql 1112 7月 6 2020 server-cert.pem
-rwxrwxrwx. 1 mysql mysql 1676 7月 6 2020 server-key.pem
-rwxrwxrwx. 1 mysql mysql 283240902 4月 1 18:29 slow.log
drwxrwxrwx. 2 mysql mysql 4096 1月 28 16:11 small_reservoir
drwxrwxrwx. 2 mysql mysql 4096 7月 6 2020 sys
drwxrwxrwx. 2 mysql mysql 4096 9月 18 2020 ulanqab
-rwxrwxrwx. 1 mysql mysql 46137344 4月 1 18:59 undo_001
-rwxrwxrwx. 1 mysql mysql 46137344 4月 1 18:59 undo_002
此时所有数据文件全部属于mysql:mysql用户组了,启动MySQL
[root@localhost mysqldata]# service mysql start
Starting MySQL......... SUCCESS!
[root@localhost bin]# ps -ef | grep mysql
root 1271 1 0 10:33 pts/3 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/opt/apps/data/mysqldata --pid-file=/opt/apps/tmp/mysql/mysqld.pid
mysql 1751 1271 1 10:33 pts/3 00:00:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/opt/apps/data/mysqldata --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=error.log --pid-file=/opt/apps/tmp/mysql/mysqld.pid --socket=/opt/apps/tmp/mysql/mysql.sock --port=3326
root 4125 10500 0 10:36 pts/0 00:00:00 grep --color=auto mysql
启动命令都如此不同,嘎嘎嘎嘎嘎,OK,搞定!

浙公网安备 33010602011771号