MySQL 登录问题 ERROR 2002 (HY000)

时间:2022-09-19 21:44:08

*****@*****-VirtualBox:~$ sudo /etc/init.d/mysql.server status

* MySQL running (3907)

*****@*****-VirtualBox:~$ sudo mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)


其实,原本压根就没有这个目录:/var/run/mysqld/mysqld.sock'

在目录 /var/run下面没有 文件夹 mysqld, 自己创建文件夹:mysqld,并把把已经存在的文件地址里链接过去:
ln -s /tmp/mysql.sock /var/run/mysqld/mysql.sock

依然显示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)



现在问题有2个:
问题1:  error里面的信息提示是:mysqld.sock,但是我在系统中找到的是 mysql.sock,请问这两个是同样一个文件吗?


问题2:  在my.cnf里面 的 socket = /tmp/mysql.sock,跟error里面的目录/var/run/mysqld/ 不一样,是不是这个原因导致的?



各种百度和谷歌去尝试,依然还是这个错误。到底哪里出了问题啊???
请各位大神帮忙,谢谢!

22 个解决方案

#1


我把my.cnf里面的
【client】 和 【mysqld】
分别修改为:
socket = /var/run/mysqld/mysql.sock

依然显示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

#2


既然用 mysql -u root -p 连接不上去,那我就尝试用:
mysql -h 127.0.0.1
成功了,如下:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.39 MySQL Community Server (GPL)


Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.07 sec)





但是有个问题: 
一般最开始登陆进入mysql后,都会默认有 4 个数据库,分别是:
information_schema
mysql
performation_schema
test

但是我用 mysql -h 127.0.0.1 登陆进去后发现,只有上面的 2 个数据库:
information_schema |
| test       



这是为什么啦?到底是怎么回事? 谁能帮忙解答下?





#3


mysqld.sock是mysql启动以后自动生成的文件,关闭MySQL服务后,这个文件又会被删除。如果MySQL启动异常,就有可能不生成这个文件,登录的时候就会出现你这个错误。
你看看MySQL的错误日志里有没有什么异常信息,MySQL真的正常启动了吗?

#4


引用 3 楼 zhu19774279 的回复:
mysqld.sock是mysql启动以后自动生成的文件,关闭MySQL服务后,这个文件又会被删除。如果MySQL启动异常,就有可能不生成这个文件,登录的时候就会出现你这个错误。
你看看MySQL的错误日志里有没有什么异常信息,MySQL真的正常启动了吗?


错误日志内容如下:
141028 16:09:46 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

141028 16:09:46 [Note] Event Scheduler: Purging the queue. 0 events
141028 16:09:46  InnoDB: Starting shutdown...
141028 16:09:47  InnoDB: Shutdown completed; log sequence number 1595675
141028 16:09:47 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

141028 16:09:47 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
tualBox.pid ended
141028 16:13:08 mysqld_safe Starting mysqld daemon with databases from /usr/loca
l/mysql/data
141028 16:13:08 [Note] Plugin 'FEDERATED' is disabled.
141028 16:13:08 InnoDB: The InnoDB memory heap is disabled
141028 16:13:08 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141028 16:13:08 InnoDB: Compressed tables use zlib 1.2.3
141028 16:13:08 InnoDB: Using Linux native AIO
141028 16:13:08 InnoDB: Initializing buffer pool, size = 128.0M
141028 16:13:08 InnoDB: Completed initialization of buffer pool
141028 16:13:09 InnoDB: highest supported file format is Barracuda.
141028 16:13:09  InnoDB: Waiting for the background threads to start
141028 16:13:10 InnoDB: 5.5.39 started; log sequence number 1595675
141028 16:13:10 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 0  MySQL Community Server (G
PL)
141028 16:32:28 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

141028 16:32:28  InnoDB: Starting shutdown...
141028 16:32:29  InnoDB: Shutdown completed; log sequence number 1595675
141028 16:32:29 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

141028 16:32:29 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
tualBox.pid ended
141028 16:33:00 mysqld_safe Starting mysqld daemon with databases from /usr/loca
l/mysql/data
141028 16:33:01 [Note] Plugin 'FEDERATED' is disabled.
141028 16:33:01 InnoDB: The InnoDB memory heap is disabled
141028 16:33:01 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141028 16:33:01 InnoDB: Compressed tables use zlib 1.2.3
141028 16:33:01 InnoDB: Using Linux native AIO
141028 16:33:01 InnoDB: Initializing buffer pool, size = 128.0M
141028 16:33:02 InnoDB: Completed initialization of buffer pool
141028 16:33:02 InnoDB: highest supported file format is Barracuda.
141028 16:33:02  InnoDB: Waiting for the background threads to start
141028 16:33:03 InnoDB: 5.5.39 started; log sequence number 1595675
141028 16:33:03 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
141028 16:33:03 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
141028 16:33:03 [Note] Server socket created on IP: '0.0.0.0'.
141028 16:33:03 [Note] Event Scheduler: Loaded 0 events
141028 16:33:03 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server
 (GPL)
141028 17:06:23 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

141028 17:06:23 [Note] Event Scheduler: Purging the queue. 0 events
141028 17:06:23  InnoDB: Starting shutdown...
141028 17:06:24  InnoDB: Shutdown completed; log sequence number 1595675
141028 17:06:24 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

141028 17:06:24 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
tualBox.pid ended
141028 17:06:54 mysqld_safe Starting mysqld daemon with databases from /usr/loca
l/mysql/data
141028 17:06:55 [Note] Plugin 'FEDERATED' is disabled.
141028 17:06:55 InnoDB: The InnoDB memory heap is disabled
141028 17:06:55 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141028 17:06:55 InnoDB: Compressed tables use zlib 1.2.3
141028 17:06:55 InnoDB: Using Linux native AIO
141028 17:06:55 InnoDB: Initializing buffer pool, size = 128.0M
141028 17:06:55 InnoDB: Completed initialization of buffer pool
141028 17:06:55 InnoDB: highest supported file format is Barracuda.
141028 17:06:56  InnoDB: Waiting for the background threads to start
141028 17:06:57 InnoDB: 5.5.39 started; log sequence number 1595675
141028 17:06:57 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
141028 17:06:57 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
141028 17:06:57 [Note] Server socket created on IP: '0.0.0.0'.
141028 17:06:57 [Note] Event Scheduler: Loaded 0 events
141028 17:06:57 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server
 (GPL)
root@gaoyu-VirtualBox:~# tail /usr/local/mysql/data/gaoyu-VirtualBox.err
141028 17:06:55 InnoDB: Completed initialization of buffer pool
141028 17:06:55 InnoDB: highest supported file format is Barracuda.
141028 17:06:56  InnoDB: Waiting for the background threads to start
141028 17:06:57 InnoDB: 5.5.39 started; log sequence number 1595675
141028 17:06:57 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
141028 17:06:57 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
141028 17:06:57 [Note] Server socket created on IP: '0.0.0.0'.
141028 17:06:57 [Note] Event Scheduler: Loaded 0 events
141028 17:06:57 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

没有任何异常信息。


我发现 用 127.0.0.1 能正常登陆,但是用 root 或者其他用户都无法登陆并且提示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

#5


1. 第一个问题你可以修改你MYSQLD 的socket默认路径
2. 权限问题,root@127.0.0.1没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了

#6


引用 5 楼 chengchow2001 的回复:
1. 第一个问题你可以修改你MYSQLD 的socket默认路径
2. 权限问题,root@127.0.0.1没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了


1. 第一个问题你可以修改你MYSQLD 的socket默认路径
回复:我修改过了,还是提示原来同样的错误

2. 权限问题,root@127.0.0.1没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了
回复:现在的问题是这样的:
我采用如下方法( 重新创建mysqld.sock)解决了,可以正常登陆。
root@*****-VirtualBox:~# mkdir /var/run/mysqld
root@*****-VirtualBox:~# ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock
root@*****-VirtualBox:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.                 
......
......
.......

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+                                    ---->4 个默认的数据库


当我用 127.0.0.1 登陆查看数据库,竟然只有 2 个数据库了,这是为什么?
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+

请教,为什么用localhost登陆会显示 4个完整的数据库,而用 127.0.0.1登陆时,只显示 2 个数据库?

而且 这种方法治标不治本,当我重启系统后mysqld.sock就消失了为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

#7


我想是不是 有多个mysql实例?

#8


你改完有重启过mysql吗?

#9


引用 8 楼 chengchow2001 的回复:
你改完有重启过mysql吗?



每次改完配置文件都会重启机器的。

郁闷,头疼啊!!! MySQL 登录问题 ERROR 2002 (HY000)

#10


localhost和127.0.0.1似乎被MySQL认为是两个不同的访问地址,你要看一下你账户的访问权限:
用localhost登录,先看看都有那些用户可以从什么地址访问
SELECT `user`, `host` FROM `mysql`.`user`;

然后再看看访问权限,比如
SHOW GRANTS FOR 'root'@'localhost';

既然localhost可以看到四张表,那么说明数据库数据没有问题,剩下的原因应该就是权限不同导致看到的表不同

#11


引用 10 楼 zhu19774279 的回复:
localhost和127.0.0.1似乎被MySQL认为是两个不同的访问地址,你要看一下你账户的访问权限:
用localhost登录,先看看都有那些用户可以从什么地址访问
SELECT `user`, `host` FROM `mysql`.`user`;

然后再看看访问权限,比如
SHOW GRANTS FOR 'root'@'localhost';

既然localhost可以看到四张表,那么说明数据库数据没有问题,剩下的原因应该就是权限不同导致看到的表不同


其实,我在 6  楼的方法(重新创建mysqld.sock),这种方法治标不治本,当我重启系统后mysqld.sock就消失了,我又需要重新建立mysql.sock 。 为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

#12


现在问题有2个:
问题1:  error里面的信息提示是:mysqld.sock,但是我在系统中找到的是 mysql.sock,请问这两个是同样一个文件吗?
问题2:  在my.cnf里面 的 socket = /tmp/mysql.sock,跟error里面的目录/var/run/mysqld/ 不一样,是不是这个原因导致的?

终于看到关键信息了
其实你自己已经找到文件原因了
mysql需要通过sock文件来连接服务器,你mysqld字段的sock文件和client段的文件名不一样
所以mysql认为是其他实例的sock文件,自然就去默认路径去寻找了,默认路径就是 /var/run/mysqld/mysql.sock
LZ你这是误导大伙,把两个修改一样就可以了

#13


引用 12 楼 chengchow2001 的回复:
现在问题有2个:
问题1:  error里面的信息提示是:mysqld.sock,但是我在系统中找到的是 mysql.sock,请问这两个是同样一个文件吗?
问题2:  在my.cnf里面 的 socket = /tmp/mysql.sock,跟error里面的目录/var/run/mysqld/ 不一样,是不是这个原因导致的?

终于看到关键信息了
其实你自己已经找到文件原因了
mysql需要通过sock文件来连接服务器,你mysqld字段的sock文件和client段的文件名不一样
所以mysql认为是其他实例的sock文件,自然就去默认路径去寻找了,默认路径就是 /var/run/mysqld/mysql.sock
LZ你这是误导大伙,把两个修改一样就可以了


没有误导大家, 你都没有看到 我的 my.cnf文件内容,如何知道mysqld字段的sock文件和client段的文件名不一样!!!

下面是my.cnf文件 部分内容:
MySQL 登录问题 ERROR 2002 (HY000)

#14


你这样配置还有问题吗?
如果有你确定你MYSQL用的是这个配置文件

#15


引用 7 楼 mchdba 的回复:
我想是不是 有多个mysql实例?


我已经用  mysql -u root -p -S /tmp/mysql.sock 解决了。
但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?

#16


引用 15 楼 ggxxkkll 的回复:
Quote: 引用 7 楼 mchdba 的回复:

我想是不是 有多个mysql实例?


我已经用  mysql -u root -p -S /tmp/mysql.sock 解决了。
但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?


这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。

#17


引用 16 楼 mchdba 的回复:
Quote: 引用 15 楼 ggxxkkll 的回复:

Quote: 引用 7 楼 mchdba 的回复:

我想是不是 有多个mysql实例?


我已经用  mysql -u root -p -S /tmp/mysql.sock 解决了。
但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?


这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。


我用 mysql -u root -p  无法登陆,因为会一直报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

#18


确实比较奇怪
难道是对'/var/run/mysqld文件夹没有权限?

#19


引用 18 楼 zhu19774279 的回复:
确实比较奇怪
难道是对'/var/run/mysqld文件夹没有权限?



事实上,根本就没有文件夹 mysqld
每次我建立文件夹 mysqld,重启系统后这个文件夹mysqld就会消失。

#20


我的mysql也出现过类似的问题,不过我的已经弄好了.

出现的问题是:修改了/etc/mysql/mysql.conf.d文件夹里的mysql_safe_syslog.cnf文件
正确地做法是不要在mysql_safe_syslog.cnf中的[mysqld_safe]下面添加任何自定义语句,只留下默认语句
[mysql_safe]
syslog
即可...
可能你的问题不是这种情况导致的,但也希望对你有所帮助 MySQL 登录问题 ERROR 2002 (HY000)

#21


我的mysql也出现过类似的问题,不过我的已经弄好了.

出现的问题是:修改了/etc/mysql/mysql.conf.d文件夹里的mysql_safe_syslog.cnf文件
正确地做法是不要在mysql_safe_syslog.cnf中的[mysqld_safe]下面添加任何自定义语句,只留下默认语句
[mysqld_safe]
syslog
即可...
可能你的问题不是这种情况导致的,但也希望对你有所帮助

#22


自启动和登陆问题:
在/etc/rc.local文件里添加以下几行:
mkdir /var/run/mysqld
chown mysql.mysql /var/run/mysqld
/etc/init.d/mysqld restart(先将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysql)
重启即可完成。

#1


我把my.cnf里面的
【client】 和 【mysqld】
分别修改为:
socket = /var/run/mysqld/mysql.sock

依然显示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

#2


既然用 mysql -u root -p 连接不上去,那我就尝试用:
mysql -h 127.0.0.1
成功了,如下:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.39 MySQL Community Server (GPL)


Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.07 sec)





但是有个问题: 
一般最开始登陆进入mysql后,都会默认有 4 个数据库,分别是:
information_schema
mysql
performation_schema
test

但是我用 mysql -h 127.0.0.1 登陆进去后发现,只有上面的 2 个数据库:
information_schema |
| test       



这是为什么啦?到底是怎么回事? 谁能帮忙解答下?





#3


mysqld.sock是mysql启动以后自动生成的文件,关闭MySQL服务后,这个文件又会被删除。如果MySQL启动异常,就有可能不生成这个文件,登录的时候就会出现你这个错误。
你看看MySQL的错误日志里有没有什么异常信息,MySQL真的正常启动了吗?

#4


引用 3 楼 zhu19774279 的回复:
mysqld.sock是mysql启动以后自动生成的文件,关闭MySQL服务后,这个文件又会被删除。如果MySQL启动异常,就有可能不生成这个文件,登录的时候就会出现你这个错误。
你看看MySQL的错误日志里有没有什么异常信息,MySQL真的正常启动了吗?


错误日志内容如下:
141028 16:09:46 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

141028 16:09:46 [Note] Event Scheduler: Purging the queue. 0 events
141028 16:09:46  InnoDB: Starting shutdown...
141028 16:09:47  InnoDB: Shutdown completed; log sequence number 1595675
141028 16:09:47 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

141028 16:09:47 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
tualBox.pid ended
141028 16:13:08 mysqld_safe Starting mysqld daemon with databases from /usr/loca
l/mysql/data
141028 16:13:08 [Note] Plugin 'FEDERATED' is disabled.
141028 16:13:08 InnoDB: The InnoDB memory heap is disabled
141028 16:13:08 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141028 16:13:08 InnoDB: Compressed tables use zlib 1.2.3
141028 16:13:08 InnoDB: Using Linux native AIO
141028 16:13:08 InnoDB: Initializing buffer pool, size = 128.0M
141028 16:13:08 InnoDB: Completed initialization of buffer pool
141028 16:13:09 InnoDB: highest supported file format is Barracuda.
141028 16:13:09  InnoDB: Waiting for the background threads to start
141028 16:13:10 InnoDB: 5.5.39 started; log sequence number 1595675
141028 16:13:10 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 0  MySQL Community Server (G
PL)
141028 16:32:28 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

141028 16:32:28  InnoDB: Starting shutdown...
141028 16:32:29  InnoDB: Shutdown completed; log sequence number 1595675
141028 16:32:29 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

141028 16:32:29 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
tualBox.pid ended
141028 16:33:00 mysqld_safe Starting mysqld daemon with databases from /usr/loca
l/mysql/data
141028 16:33:01 [Note] Plugin 'FEDERATED' is disabled.
141028 16:33:01 InnoDB: The InnoDB memory heap is disabled
141028 16:33:01 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141028 16:33:01 InnoDB: Compressed tables use zlib 1.2.3
141028 16:33:01 InnoDB: Using Linux native AIO
141028 16:33:01 InnoDB: Initializing buffer pool, size = 128.0M
141028 16:33:02 InnoDB: Completed initialization of buffer pool
141028 16:33:02 InnoDB: highest supported file format is Barracuda.
141028 16:33:02  InnoDB: Waiting for the background threads to start
141028 16:33:03 InnoDB: 5.5.39 started; log sequence number 1595675
141028 16:33:03 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
141028 16:33:03 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
141028 16:33:03 [Note] Server socket created on IP: '0.0.0.0'.
141028 16:33:03 [Note] Event Scheduler: Loaded 0 events
141028 16:33:03 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server
 (GPL)
141028 17:06:23 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

141028 17:06:23 [Note] Event Scheduler: Purging the queue. 0 events
141028 17:06:23  InnoDB: Starting shutdown...
141028 17:06:24  InnoDB: Shutdown completed; log sequence number 1595675
141028 17:06:24 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

141028 17:06:24 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
tualBox.pid ended
141028 17:06:54 mysqld_safe Starting mysqld daemon with databases from /usr/loca
l/mysql/data
141028 17:06:55 [Note] Plugin 'FEDERATED' is disabled.
141028 17:06:55 InnoDB: The InnoDB memory heap is disabled
141028 17:06:55 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
141028 17:06:55 InnoDB: Compressed tables use zlib 1.2.3
141028 17:06:55 InnoDB: Using Linux native AIO
141028 17:06:55 InnoDB: Initializing buffer pool, size = 128.0M
141028 17:06:55 InnoDB: Completed initialization of buffer pool
141028 17:06:55 InnoDB: highest supported file format is Barracuda.
141028 17:06:56  InnoDB: Waiting for the background threads to start
141028 17:06:57 InnoDB: 5.5.39 started; log sequence number 1595675
141028 17:06:57 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
141028 17:06:57 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
141028 17:06:57 [Note] Server socket created on IP: '0.0.0.0'.
141028 17:06:57 [Note] Event Scheduler: Loaded 0 events
141028 17:06:57 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server
 (GPL)
root@gaoyu-VirtualBox:~# tail /usr/local/mysql/data/gaoyu-VirtualBox.err
141028 17:06:55 InnoDB: Completed initialization of buffer pool
141028 17:06:55 InnoDB: highest supported file format is Barracuda.
141028 17:06:56  InnoDB: Waiting for the background threads to start
141028 17:06:57 InnoDB: 5.5.39 started; log sequence number 1595675
141028 17:06:57 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
141028 17:06:57 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
141028 17:06:57 [Note] Server socket created on IP: '0.0.0.0'.
141028 17:06:57 [Note] Event Scheduler: Loaded 0 events
141028 17:06:57 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

没有任何异常信息。


我发现 用 127.0.0.1 能正常登陆,但是用 root 或者其他用户都无法登陆并且提示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

#5


1. 第一个问题你可以修改你MYSQLD 的socket默认路径
2. 权限问题,root@127.0.0.1没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了

#6


引用 5 楼 chengchow2001 的回复:
1. 第一个问题你可以修改你MYSQLD 的socket默认路径
2. 权限问题,root@127.0.0.1没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了


1. 第一个问题你可以修改你MYSQLD 的socket默认路径
回复:我修改过了,还是提示原来同样的错误

2. 权限问题,root@127.0.0.1没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了
回复:现在的问题是这样的:
我采用如下方法( 重新创建mysqld.sock)解决了,可以正常登陆。
root@*****-VirtualBox:~# mkdir /var/run/mysqld
root@*****-VirtualBox:~# ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock
root@*****-VirtualBox:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.                 
......
......
.......

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+                                    ---->4 个默认的数据库


当我用 127.0.0.1 登陆查看数据库,竟然只有 2 个数据库了,这是为什么?
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+

请教,为什么用localhost登陆会显示 4个完整的数据库,而用 127.0.0.1登陆时,只显示 2 个数据库?

而且 这种方法治标不治本,当我重启系统后mysqld.sock就消失了为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

#7


我想是不是 有多个mysql实例?

#8


你改完有重启过mysql吗?

#9


引用 8 楼 chengchow2001 的回复:
你改完有重启过mysql吗?



每次改完配置文件都会重启机器的。

郁闷,头疼啊!!! MySQL 登录问题 ERROR 2002 (HY000)

#10


localhost和127.0.0.1似乎被MySQL认为是两个不同的访问地址,你要看一下你账户的访问权限:
用localhost登录,先看看都有那些用户可以从什么地址访问
SELECT `user`, `host` FROM `mysql`.`user`;

然后再看看访问权限,比如
SHOW GRANTS FOR 'root'@'localhost';

既然localhost可以看到四张表,那么说明数据库数据没有问题,剩下的原因应该就是权限不同导致看到的表不同

#11


引用 10 楼 zhu19774279 的回复:
localhost和127.0.0.1似乎被MySQL认为是两个不同的访问地址,你要看一下你账户的访问权限:
用localhost登录,先看看都有那些用户可以从什么地址访问
SELECT `user`, `host` FROM `mysql`.`user`;

然后再看看访问权限,比如
SHOW GRANTS FOR 'root'@'localhost';

既然localhost可以看到四张表,那么说明数据库数据没有问题,剩下的原因应该就是权限不同导致看到的表不同


其实,我在 6  楼的方法(重新创建mysqld.sock),这种方法治标不治本,当我重启系统后mysqld.sock就消失了,我又需要重新建立mysql.sock 。 为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

#12


现在问题有2个:
问题1:  error里面的信息提示是:mysqld.sock,但是我在系统中找到的是 mysql.sock,请问这两个是同样一个文件吗?
问题2:  在my.cnf里面 的 socket = /tmp/mysql.sock,跟error里面的目录/var/run/mysqld/ 不一样,是不是这个原因导致的?

终于看到关键信息了
其实你自己已经找到文件原因了
mysql需要通过sock文件来连接服务器,你mysqld字段的sock文件和client段的文件名不一样
所以mysql认为是其他实例的sock文件,自然就去默认路径去寻找了,默认路径就是 /var/run/mysqld/mysql.sock
LZ你这是误导大伙,把两个修改一样就可以了

#13


引用 12 楼 chengchow2001 的回复:
现在问题有2个:
问题1:  error里面的信息提示是:mysqld.sock,但是我在系统中找到的是 mysql.sock,请问这两个是同样一个文件吗?
问题2:  在my.cnf里面 的 socket = /tmp/mysql.sock,跟error里面的目录/var/run/mysqld/ 不一样,是不是这个原因导致的?

终于看到关键信息了
其实你自己已经找到文件原因了
mysql需要通过sock文件来连接服务器,你mysqld字段的sock文件和client段的文件名不一样
所以mysql认为是其他实例的sock文件,自然就去默认路径去寻找了,默认路径就是 /var/run/mysqld/mysql.sock
LZ你这是误导大伙,把两个修改一样就可以了


没有误导大家, 你都没有看到 我的 my.cnf文件内容,如何知道mysqld字段的sock文件和client段的文件名不一样!!!

下面是my.cnf文件 部分内容:
MySQL 登录问题 ERROR 2002 (HY000)

#14


你这样配置还有问题吗?
如果有你确定你MYSQL用的是这个配置文件

#15


引用 7 楼 mchdba 的回复:
我想是不是 有多个mysql实例?


我已经用  mysql -u root -p -S /tmp/mysql.sock 解决了。
但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?

#16


引用 15 楼 ggxxkkll 的回复:
Quote: 引用 7 楼 mchdba 的回复:

我想是不是 有多个mysql实例?


我已经用  mysql -u root -p -S /tmp/mysql.sock 解决了。
但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?


这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。

#17


引用 16 楼 mchdba 的回复:
Quote: 引用 15 楼 ggxxkkll 的回复:

Quote: 引用 7 楼 mchdba 的回复:

我想是不是 有多个mysql实例?


我已经用  mysql -u root -p -S /tmp/mysql.sock 解决了。
但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?


这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。


我用 mysql -u root -p  无法登陆,因为会一直报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

#18


确实比较奇怪
难道是对'/var/run/mysqld文件夹没有权限?

#19


引用 18 楼 zhu19774279 的回复:
确实比较奇怪
难道是对'/var/run/mysqld文件夹没有权限?



事实上,根本就没有文件夹 mysqld
每次我建立文件夹 mysqld,重启系统后这个文件夹mysqld就会消失。

#20


我的mysql也出现过类似的问题,不过我的已经弄好了.

出现的问题是:修改了/etc/mysql/mysql.conf.d文件夹里的mysql_safe_syslog.cnf文件
正确地做法是不要在mysql_safe_syslog.cnf中的[mysqld_safe]下面添加任何自定义语句,只留下默认语句
[mysql_safe]
syslog
即可...
可能你的问题不是这种情况导致的,但也希望对你有所帮助 MySQL 登录问题 ERROR 2002 (HY000)

#21


我的mysql也出现过类似的问题,不过我的已经弄好了.

出现的问题是:修改了/etc/mysql/mysql.conf.d文件夹里的mysql_safe_syslog.cnf文件
正确地做法是不要在mysql_safe_syslog.cnf中的[mysqld_safe]下面添加任何自定义语句,只留下默认语句
[mysqld_safe]
syslog
即可...
可能你的问题不是这种情况导致的,但也希望对你有所帮助

#22


自启动和登陆问题:
在/etc/rc.local文件里添加以下几行:
mkdir /var/run/mysqld
chown mysql.mysql /var/run/mysqld
/etc/init.d/mysqld restart(先将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysql)
重启即可完成。