Mysql的。 绑定在unix套接字上:权限被拒绝

无法启动MySQL:

130408 11:31:22 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql /usr/libexec/mysqld: Table 'plugin' is read only 130408 11:31:22 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 130408 11:31:22 InnoDB: Initializing buffer pool, size = 8.0M 130408 11:31:22 InnoDB: Completed initialization of buffer pool 130408 11:31:23 InnoDB: Started; log sequence number 0 19514977 130408 11:31:23 [ERROR] Can't start server : Bind on unix socket: Permission denied 130408 11:31:23 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ? 130408 11:31:23 [ERROR] Aborting 130408 11:31:23 InnoDB: Starting shutdown... 130408 11:31:28 InnoDB: Shutdown completed; log sequence number 0 19514977 130408 11:31:28 [Note] /usr/libexec/mysqld: Shutdown complete 130408 11:31:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 

另一个mysql不是runnig:

 [root@triton667 etc]# ps ax | grep mysql 9195 pts/1 S+ 0:00 grep mysql 

my.cnf文件:

  [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql tmpdir=/tmp # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 max_allowed_packet=256M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 

“/ tmp”和“/ var / lib / mysql”的权限是777 /

有什么build议么?

UPD1

 [root@triton667 etc]# mysql_upgrade Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) trying to connect FATAL ERROR: Upgrade failed 

UPD2 :plugin.MYD,plugin.MYI和plugin.frm存在于/ var / lib / mysql / mysql /中。

没有运行在端口3306上。

mysql.sock不存在。 我试图自己创build它,但重新启动后,它被删除。

mount(全部rw):

 [root@triton667 mysql]# mount /dev/md1 on / type ext4 (rw,noatime,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/md0 on /boot type ext2 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) nfsd on /proc/fs/nfsd type nfsd (rw) 

当我试图在一个子域上克隆我的网站时,今天出现了这个问题。

1)首先确保使用rm命令删除现有套接字文件。

 rm /var/lib/mysql/mysql.sock 

2)通过以下命令杀死所有现有的MySQL进程。

 service mysql stop 

3)非常重要:确保/var/lib/文件夹下MySQL数据库目录的权限应该是mysql:root

 chown -R mysql:root /var/lib/mysql 

4)有了上面的信息,你应该可以成功启动MySQL,并且应该在数据库目录下成功创build套接字文件。

 service mysql start 

感谢@ Abhishek的答案与mysqld输出相结合(不能使用/var/run/mysqld/mysqld.sock)我设法用一个命令解决这个问题:

 chown -R mysql:root /var/run/mysqld 

然后它正确启动:

 root@***:~# service mysql start df: Warning: cannot read table of mounted file systems: No such file or directory [ ok ] Starting MySQL database server: mysqld .. [info] Checking for tables which need an upgrade, are corrupt or were not closed cleanly.. 

您的问题可能是由于任何阻止MySQL守护进程将套接字文件写入path/var/lib/mysql情况导致的。 其他答案,如只读文件系统或不正确的目录所有权,解决了MySQL可能无法写入套接字的各种原因。

另一个可能的原因是/var/lib/mysql可能有不正确的SELinux上下文。 在尝试启动MySQL守护进程后,您可以通过检查最近的SELinux AVC拒绝来诊断这种情况:

ausearch -m avc --start recent

如果SELinux拒绝创build套接字文件,您将看到如下错误消息:

 time->Thu Feb 2 03:46:27 2017 type=SYSCALL msg=audit(1566106187.784:152): arch=c000004e syscall=49 success=no exit=-13 a0=4f a1=7ff3fd652e80 a2=6e a3=7fcd2d6523d40 items=0 ppid=1 pid=1820 auid=4294967295 uid=996 gid=994 euid=996 suid=996 fsuid=996 egid=994 sgid=994 fsgid=994 tty=(none) ses=4294967295 comm="mysqld" exe="/usr/sbin/mysqld" subj=system_u:system_r:mysqld_t:s0 key=(null) type=AVC msg=audit(1566106187.784:152): avc: denied { create } for pid=1820 comm="mysqld" name="mysql.sock" scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=sock_file 

要解决SELinux拒绝,请尝试恢复目录的默认上下文(当您安装MySQL或MariaDB时,您的分发应该设置mysqld_db_t的正确上下文):

restorecon -R -v -f /var/lib/mysql

如果您已经在系统上定制了上下文,修复这个问题已经超出了本文的范围。

根据你写的内容,我build议你检查一下你的文件系统是否是只读的。

130408 11:31:22 mysqld_safe从/ var / lib / mysql / usr / libexec / mysqld启动mysqld守护进程:表'plugin'是只读的