mysqld - 更改数据目录位置后无法连接到套接字

4 mysql

在将 MySQL 数据目录位置从默认“/var/lib/mysql”更改后,我遇到了这个奇怪的问题昨天还在工作,但今天我收到“无法通过套接字连接到本地 MySQL 服务器”/var/lib/mysql/mysql .sock'”,如果守护程序没有运行并且它正在旧的 datadir 位置寻找套接字文件,则这是一条典型的消息。

我将 my.cnf 文件和 mysqld 文件更改为指向新位置 NEW_DIR。守护进程运行,但我无法打开 mysql。

提前致谢。

# cat /etc/my.cnf
[mysqld]
datadir=/NEW_DIR/mysql
socket=/NEW_DIR/mysql/mysql.sock

# cat /etc/init.d/mysqld | grep datadir
get_mysql_option mysqld datadir "/NEW_DIR/mysql"
datadir="$result"
get_mysql_option mysqld socket "$datadir/mysql.sock"

# /etc/init.d/mysqld start
Starting MySQL:                                            [  OK  ]

# tail mysqld.log 
120203 11:12:20  mysqld started
120203 11:12:20  InnoDB: Started; log sequence number 0 43655
120203 11:12:20 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.77'  socket: '/NEW_DIR/mysql/mysql.sock'  port: 3306  Source distribution

# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Run Code Online (Sandbox Code Playgroud)

小智 7

问题是mysql客户端程序配置。您可以指定--socket=/NEW_DIR/mysql/mysql.sock命令行选项或将其添加到文件[mysql]部分下my.cnf

请查看通过选项文件指定选项的文档:http : //dev.mysql.com/doc/refman/5.0/en/option-files.html

由于更改套接字路径会影响所有客户端程序,因此更新全局my.cnf并设置socket[client]部分下的选项是有意义的。