这是一个今天真正让我疯狂的问题:
基本上,我从源码(在ARM机器上的Ubuntu 9.04上的MySQL 5.1.14)编译MySQL,这是我试图运行它时发生的事情:
/etc/init.d/mysql start Starting MySQL.. * Manager of pid-file quit without updating file.
挖掘错误日志,这里是我所看到的:
110826 18:00:21 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var 110826 18:00:22 [ERROR] Can't start server : Bind on unix socket: Permission denied 110826 18:00:22 [ERROR] Do you already have another mysqld server running on socket: /tmp/mysql.sock ? 110826 18:00:22 [ERROR] Aborting 110826 18:00:22 [Note] /usr/local/mysql/libexec/mysqld: Shutdown complete 110826 18:00:22 mysqld_safe mysqld from pid file /usr/local/mysql/var/Serv.pid ended
所以这是我试图做的:
touch mysql.sock chown mysql:mysql mysql.sock chmod 1777 mysql.sock
一切似乎都很好:
ls -la | grep mysql.sock -rwxrwxrwt 1 mysql mysql 0 2011-08-26 18:02 mysql.sock
但是,猜测什么,每次我尝试重新启动mySQL,同样的错误发生,似乎由于某种原因,袜子文件已经消失。
我以root身份运行整个过程,所以权限不应该成为问题。
任何build议? 谢谢!
chmod 1777 /tmp
试。
你真的不应该手动创build这个文件,这不是一个普通的文件,这是一个有名的套接字,它应该列在ls
输出类似srwxrwxrwx 1 mysql mysql 0 Aug 20 23:49 mysql.sock=
。 你确定另一个mysqld没有启动在同一个套接字?
Ubuntu是否设置为使用SELinux,SMACK或AppArmor等安全框架,需要对其进行修改以允许您的自定义mysql实例运行? 数据库文件是否需要作为mysql拥有的mysql用户拥有的权限在运行时会放弃root权限?
作为一个侧面说明,你尝试创build一个套接字文件是不正确的,你已经创build了一个不是套接字的常规文件,你需要使用mksock在文件系统中创build一个套接字文件。