MySQL 登录问题 ERROR 2002 (HY000)

giant7 2014-10-28 11:27:09

*****@*****-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/ 不一样,是不是这个原因导致的?



各种百度和谷歌去尝试,依然还是这个错误。到底哪里出了问题啊???
请各位大神帮忙,谢谢!
...全文
21104 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37490686 2017-02-09
  • 打赏
  • 举报
回复
自启动和登陆问题: 在/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) 重启即可完成。
xiaoxindeboke 2015-12-02
  • 打赏
  • 举报
回复
我的mysql也出现过类似的问题,不过我的已经弄好了. 出现的问题是:修改了/etc/mysql/mysql.conf.d文件夹里的mysql_safe_syslog.cnf文件 正确地做法是不要在mysql_safe_syslog.cnf中的[mysqld_safe]下面添加任何自定义语句,只留下默认语句 [mysql_safe] syslog 即可... 可能你的问题不是这种情况导致的,但也希望对你有所帮助
xiaoxindeboke 2015-12-02
  • 打赏
  • 举报
回复
我的mysql也出现过类似的问题,不过我的已经弄好了. 出现的问题是:修改了/etc/mysql/mysql.conf.d文件夹里的mysql_safe_syslog.cnf文件 正确地做法是不要在mysql_safe_syslog.cnf中的[mysqld_safe]下面添加任何自定义语句,只留下默认语句 [mysqld_safe] syslog 即可... 可能你的问题不是这种情况导致的,但也希望对你有所帮助
giant7 2014-10-30
  • 打赏
  • 举报
回复
引用 18 楼 zhu19774279 的回复:
确实比较奇怪 难道是对'/var/run/mysqld文件夹没有权限?
事实上,根本就没有文件夹 mysqld, 每次我建立文件夹 mysqld,重启系统后这个文件夹mysqld就会消失。
zhu19774279 2014-10-30
  • 打赏
  • 举报
回复
确实比较奇怪 难道是对'/var/run/mysqld文件夹没有权限?
giant7 2014-10-30
  • 打赏
  • 举报
回复
引用 16 楼 mchdba 的回复:
[quote=引用 15 楼 ggxxkkll 的回复:] [quote=引用 7 楼 mchdba 的回复:] 我想是不是 有多个mysql实例?
我已经用 mysql -u root -p -S /tmp/mysql.sock 解决了。 但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?[/quote] 这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。[/quote] 我用 mysql -u root -p 无法登陆,因为会一直报错: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
zhu19774279 2014-10-29
  • 打赏
  • 举报
回复
localhost和127.0.0.1似乎被MySQL认为是两个不同的访问地址,你要看一下你账户的访问权限: 用localhost登录,先看看都有那些用户可以从什么地址访问
SELECT `user`, `host` FROM `mysql`.`user`;
然后再看看访问权限,比如
SHOW GRANTS FOR 'root'@'localhost';
既然localhost可以看到四张表,那么说明数据库数据没有问题,剩下的原因应该就是权限不同导致看到的表不同
giant7 2014-10-29
  • 打赏
  • 举报
回复
引用 8 楼 chengchow2001 的回复:
你改完有重启过mysql吗?
每次改完配置文件都会重启机器的。 郁闷,头疼啊!!!
chengchow2001 2014-10-29
  • 打赏
  • 举报
回复
你改完有重启过mysql吗?
九月茅桃 2014-10-29
  • 打赏
  • 举报
回复
我想是不是 有多个mysql实例?
giant7 2014-10-29
  • 打赏
  • 举报
回复
引用 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'
chengchow2001 2014-10-29
  • 打赏
  • 举报
回复
1. 第一个问题你可以修改你MYSQLD 的socket默认路径 2. 权限问题,root@127.0.0.1没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了
九月茅桃 2014-10-29
  • 打赏
  • 举报
回复
引用 15 楼 ggxxkkll 的回复:
[quote=引用 7 楼 mchdba 的回复:] 我想是不是 有多个mysql实例?
我已经用 mysql -u root -p -S /tmp/mysql.sock 解决了。 但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?[/quote] 这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。
giant7 2014-10-29
  • 打赏
  • 举报
回复
引用 7 楼 mchdba 的回复:
我想是不是 有多个mysql实例?
我已经用 mysql -u root -p -S /tmp/mysql.sock 解决了。 但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?
chengchow2001 2014-10-29
  • 打赏
  • 举报
回复
你这样配置还有问题吗? 如果有你确定你MYSQL用的是这个配置文件
giant7 2014-10-29
  • 打赏
  • 举报
回复
引用 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文件 部分内容:
chengchow2001 2014-10-29
  • 打赏
  • 举报
回复
现在问题有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你这是误导大伙,把两个修改一样就可以了
giant7 2014-10-29
  • 打赏
  • 举报
回复
引用 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'
giant7 2014-10-28
  • 打赏
  • 举报
回复
我把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)
giant7 2014-10-28
  • 打赏
  • 举报
回复
引用 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'
加载更多回复(2)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧