我有一个位于以下位置的mysql.sock
文件:
/tmp/mysql.sock
但是my.cnf
指向了这个位置:
socket=/var/lib/mysql/mysql.sock
这是否正确?
在你的my.cnf
文件中,socket
声明应该位于[mysqld]
下面。如果你已经在那里声明了它,但仍然指向另一个地方,比如tmp
,那么你编辑过的my.cnf
文件在mysql启动时可能没有被读取,或者有另一个my.cnf
文件覆盖了你编辑过的文件。还有可能是同一个my.cnf
文件中有第二个Socket
声明,覆盖了你期望在mysql启动时读取的声明。
你可以通过登录mysql并运行以下命令来检查其绝对路径:
mysql> show variables like 'socket';
+-----------------------------------------+-------------------------------+
| Variable_name | Value |
+-----------------------------------------+-------------------------------+
| socket | /yourpath/mysql.sock |
+-----------------------------------------+-------------------------------+
1 rows in set (0.00 sec)
[client]
user = guardian
password = I-4m.Gr00t!
host = localhost
socket = /var/run/mysqld/mysqld-5.6.sock
/var/lib/mysql/my.cnf
,/etc/my.cnf
,~mysql/.my.cnf
。 - alvitsmysqld.sock
。这至少适用于Ubuntu 16.04上的Ver 14.14 Distrib 5.7.22,for Linux (x86_64)
。 - MatrixManAtYrService