解决: Can’t connect to local MySQL server through socket /var/lib/mysql/mysql.sock

今天在搬瓦工上使用mysql 命令行,总报一个这样的错:Can’t connect to local MySQL server through socket ‘/xxxxx/mysql.sock’,一开始很郁闷,回来经过查找资料,解决了这个问题.

当在本地系统连接到mysql服务器的时候,mysql 客户端通过一个叫做"socket"的本地文件进行连接,而不是通过本地环回接口(loopback)127.0.0.1进行连接.这个文件,默认情况下,客户端会去/var/lib/mysql/mysql.sock去寻找,但是我在安装的时候,这个文件是在usr/local/mysql/mysql.sock.

通过mysql --help发现,有个--socket参数:-S, --socket=name   The socket file to use for connection.这个可用用来指定socket文件位置,但是每次都要设定,太痛苦了

为了一劳永逸,我们可以更改mysql配置文件my.cnf,文件位置是这样规定的:

Table 5.2 Option Files Read on Unix and Unix-Like Systems

File NamePurpose
/etc/my.cnf Global options
/etc/mysql/my.cnf Global options
SYSCONFDIR/my.cnf Global options
$MYSQL_HOME/my.cnf Server-specific options (server only)
defaults-extra-file The file specified with --defaults-extra-file, if any
~/.my.cnf User-specific options
~/.mylogin.cnf User-specific login path options (clients only)
我的是在/etc/my.cnf,但是这个文件也是从一个备份文件复制过来的,然后里面内容是这样的:
 
[mysqld]

datadir=/var/mysql/data/

socket=/usr/local/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

 

[mysqld_safe]

log-error=/var/log/mysqld.log

#pid-file=/var/run/mysqld/mysqld.pid

pid-file=/var/mysql/data/www.chenhui.site.pid

 

我一开始总以为只要改socket="xxxx.sock"就可以了,可是不管用,弄了半天,又查资料,才知道,client在进行连接时,也要设定它使用的sock,我的配置文件中没有client的配置项,在官方手册中,是这样的

[client]
port=3306
socket=/tmp/mysql.sock

 

于是,我在自己的配置文件中加上client项,并指定socket为自己安装时的目录:/usr/local/mysql/mysql.sock

然后kill mysqld的进程,重新启动mysqld_safe,再用mysql客户端连接,不再报错了,OK了.

 
posted @ 2016-10-27 16:40  toDoYourBest  阅读(349)  评论(0编辑  收藏  举报