MySQL 登录问题 ERROR 2002 (HY000)

MySql 码拜 7年前 (2015-11-25) 662次浏览

*****@*****-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/ 不一样,是不是这个原因导致的?
各种百度和谷歌去尝试,依然还是这个错误。到底哪里出了问题啊?
请各位高手帮忙,谢谢!
解决方案:10分
mysqld.sock是mysql启动以后自动生成的文件,关闭MySQL服务后,这个文件又会被删除。假如MySQL启动异常,就有可能不生成这个文件,登录的时候就会出现你这个错误。
你看看MySQL的错误日志里有没有什么异常信息,MySQL真的正常启动了吗?
解决方案:10分
1. 第一个问题你可以修改你MYSQLD 的socket默认路径
2. 权限问题,root@127.0.0.1没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了
解决方案:5分
本人想是不是 有多个mysql实例?
解决方案:5分
你改完有重启过mysql吗?
解决方案:3分
localhost和127.0.0.1似乎被MySQL认为是两个不同的访问地址,你要看一下你账户的访问权限:
用localhost登录,先看看都有那些用户可以从什么地址访问

SELECT `user`, `host` FROM `mysql`.`user`;

然后再看看访问权限,例如

SHOW GRANTS FOR ""root""@""localhost"";

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

解决方案:3分
现在问题有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你这是误导大伙,把两个修改一样就可以了
解决方案:2分
你这样配置还有问题吗?
假如有你确定你MYSQL用的是这个配置文件

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明MySQL 登录问题 ERROR 2002 (HY000)
喜欢 (0)
[1034331897@qq.com]
分享 (0)