pid文件/var/run/mysqld/mysqld.pid中的mysqld_safe mysqld阻止服务器重启

whi*_*ear 4 mysql linux centos

我在CentOS上的mySQL服务器一直可以正常工作,但是,我今天无法突然重新启动mysqld。

1)#/etc/rc.d/init.d/mysqld启动

显示[失败]

2)查看日志

tail /var/log/mysqld.log 
.
.
mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Run Code Online (Sandbox Code Playgroud)

3)手动放

 /usr/bin/mysqld_safe

151129 15:54:36 mysqld_safe Logging to '/var/log/mysqld.log'.
151129 15:54:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
151129 15:54:37 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Run Code Online (Sandbox Code Playgroud)

4)检查配置

less /etc/my.cnf

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Run Code Online (Sandbox Code Playgroud)

5)检查mysql目录,每个所有者的船都属于mysql。但是我不能对mysql.sock进行罚款(这在my.cnf中设置)

cd /var/lib/mysql?
ls -la

drwxr-xr-x  5 mysql mysql     4096 11? 29 15:54 2015 .
drwxr-xr-x 21 root  root      4096  6?  2 06:09 2015 ..
-rw-rw----  1 mysql mysql       56  6?  2 05:42 2015 auto.cnf
drwx------  2 mysql mysql     4096 11? 24 11:12 2015 myapp
-rw-rw----  1 mysql mysql 50331648 11? 29 12:30 2015 ib_logfile0
-rw-rw----  1 mysql mysql 50331648 11? 29 12:30 2015 ib_logfile1
-rw-rw----  1 mysql mysql 79691776 11? 29 12:30 2015 ibdata1
drwx------  2 mysql mysql     4096  6?  2 05:42 2015 mysql
drwx------  2 mysql mysql     4096  6?  2 05:42 2015 performance_schema
Run Code Online (Sandbox Code Playgroud)

6)我发现/ var / lib / mysql目录中没有mysql.sock,然后出于测试目的尝试此操作。

touch /var/lib/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

尝试重新启动

/etc/rc.d/init.d/mysqld start
Run Code Online (Sandbox Code Playgroud)

不知何故,mysql.sock被删除了。

还有什么我可以尝试的吗?

Gir*_*ins 5

在我的情况下,问题是mysql尝试在其中创建临时文件,/var/run/mysqld并且该目录不存在。我通过手动创建目录并为其设置权限来解决该问题:

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
Run Code Online (Sandbox Code Playgroud)


whi*_*ear -1

我用谷歌搜索并尝试。

restorecon -r /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)

这个对我有用。谢谢。