在安装好了mysql之后,使用了新的配置文件后,mysql服务器可以成功启动,但在登陆的时候出现了error 2002 (hy000): can't connect to local mysql server through socket,即无法通过socket连接到mysql服务器,同时提供了socket文件的位置。下面是这个问题的
在安装好了mysql之后,使用了新的配置文件后,mysql服务器可以成功启动,但在登陆的时候出现了error 2002 (hy000): can't connect to local mysql server through socket,即无法通过socket连接到mysql服务器,同时提供了socket文件的位置。下面是这个问题的描述与解决办法。
1、故障现象
[root@szdb mysqldata]# mysql -uroot -p123456
warning: using a password on the command line interface can be insecure.
error 2002 (hy000): can't connect to local mysql server through socket '/data/mysqldata/mysql.sock' (111)
#故障环境
[root@szdb mysqldata]# more /etc/issue
centos release 5.9 (final)
kernel r on an m
2、故障分析
#查看mysql实例的状态
[root@szdb mysqldata]# netstat -ntlp | grep 3306
tcp 0 0 :::3306 :::* listen 13001/mysqld
#查看my.cnf关于socket的配置
[root@szdb mysqldata]# more /etc/my.cnf |grep sock
socket = /tmp/mysql.sock
#由上可知my.cnf中定义的为/tmp目录下,而错误提示为/data/mysqldata/目录下
#也就是说mysqld已经声称了正确的sock文件,但客户端连接还是从初始目录去找sock文件
#下面查看后台日志,有个error,是关于满查询日志的,是由于目录不存在而产生的错误,与当前故障无关
[root@szdb mysqldata]# more szdb.err
............
2014-10-11 13:17:21 13001 [note] innodb: 5.6.12 started; log sequence number 1625997
/app/soft/mysql/bin/mysqld: file '/log/mysql_logs/slowquery.log' not found (errcode: 2 - no such file or directory)
2014-10-11 13:17:21 13001 [error] could not use /log/mysql_logs/slowquery.log for logging (error 2). turning logging off for the who
le duration of the mysql server process. to turn it on again: fix the cause, shutdown the mysql server and restart it.
2014-10-11 13:17:21 13001 [note] server hostname (bind-address): '*'; port: 3306
2014-10-11 13:17:21 13001 [note] ipv6 is available.
2014-10-11 13:17:21 13001 [note] - '::' resolves to '::';
2014-10-11 13:17:21 13001 [note] server socket created on ip: '::'.
2014-10-11 13:17:21 13001 [note] event scheduler: loaded 0 events
2014-10-11 13:17:21 13001 [note] /app/soft/mysql/bin/mysqld: ready for connections.
version: '5.6.12-log' socket: '/tmp/mysql.sock' port: 3306 source distribution
3、解决故障
a、通过配置my.cnf mysql选项socket文件位置解决
#先停止mysql服务器
[root@szdb mysqldata]# service mysqld stop
shutting down mysql.[ ok ]
#修改my.cnf,如下
[root@szdb mysqldata]# vi /etc/my.cnf
[mysql]
no-auto-rehash
socket = /tmp/mysql.sock #添加该行
#重启mysql服务器
[root@szdb mysqldata]# service mysqld start
starting mysql..[ ok ]
#再次连接正常
[root@szdb mysqldata]# mysql -uroot -p
enter password:
mysql> show variables like 'version';
+---------------+------------+
| variable_name | value |
+---------------+------------+
| version | 5.6.12-log |
+---------------+------------+
b、为socket文件建立链接方式
[root@szdb mysqldata]# ln -s /tmp/mysql.sock /data/mysqldata/mysql.sock
ln: creating symbolic link `/data/mysqldata/mysql.sock' to `/tmp/mysql.sock': file exists
[root@szdb mysqldata]# rm mysql.sock #上面提示文件存在,所以删除之前的mysql.sock文件
[root@szdb mysqldata]# ln -s /tmp/mysql.sock /data/mysqldata/mysql.sock
[root@szdb mysqldata]# ls -hltr mysql.sock
lrwxrwxrwx 1 root root 15 oct 11 14:00 mysql.sock -> /tmp/mysql.sock
[root@szdb mysqldata]# mysql -uroot -p
enter password:
mysql> show variables like 'socket';
+---------------+-----------------+
| variable_name | value |
+---------------+-----------------+
| socket | /tmp/mysql.sock |
+---------------+-----------------+
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!