*****@*****-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真的正常启动了吗?
你看看MySQL的错误日志里有没有什么异常信息,MySQL真的正常启动了吗?
解决方案:10分
解决方案:5分
本人想是不是 有多个mysql实例?
解决方案:5分
你改完有重启过mysql吗?
解决方案:3分
localhost和127.0.0.1似乎被MySQL认为是两个不同的访问地址,你要看一下你账户的访问权限:
用localhost登录,先看看都有那些用户可以从什么地址访问
用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你这是误导大伙,把两个修改一样就可以了
问题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用的是这个配置文件
假如有你确定你MYSQL用的是这个配置文件