我最近把我的mysql的datadir从/var/lib/mysql移到了一个新的目录/home/mysql上,这个目录挂载在一个新的硬盘上。
为了整洁起见,我认为将tmpdir和socket放在这个新硬盘上会很好。
一切工作按计划,直到我移动套接字文件。 移动套接字文件可以防止phpMyAdminlogin; 我可以很好地从命令行login,并使用我的web框架,而不是使用phpMyAdmin。
工作configuration和不是的唯一区别是在my.cnf文件中。
加工:
[mysqld] socket = /var/lib/mysql/mysql.sock ... [client] socket = /var/lib/mysql/mysql.sock
不:
[mysqld] socket = /home/mysql/mysql.sock ... [client] socket = /home/mysql/mysql.sock
假设这是一个权限错误,我检查了每个位置的path:
drwxr-xr-x. root root var drwxr-xr-x. root root lib drwxr-xr-x mysql mysql mysql srwxrwxrwx mysql mysql mysql.sock drwxr-xr-x. root root home drwxr-xr-x mysql mysql mysql srwxrwxrwx mysql mysql mysql.sock
所以我猜他们没事。 我错了吗?
我phpMyAdminconfiguration为使用'localhost'我有我的本地networkingIP为服务器(192.168.etc)设置mysql bind-address选项
testing新configuration时,我也重启了httpd和mysqld服务器。
我非常乐意将套接字文件保留在原来的位置,假设这不是一个安全/性能问题,但是如果有人能够帮助解决这个问题,我们很乐意知道发生了什么。
除非您使用内置的默认位置,PHP还需要显式configurationMySQL套接字文件的位置在php.ini文件或连接string中…
pdo_mysql.default_socket = /home/mysql/mysql.sock
或取决于您select的API
mysqli.default_socket = /home/mysql/mysql.sock