Ubuntu登录mysql2002错误_【转】Ubuntu下出现Mysql error(2002)的解决方法

过了一阵子后,为了写分布式作业,重新使用Mysql时,发现虽然启动成功了,但是连接的时候去出现如下错误

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

根据提示是/var/run/mysqld/mysqld.sock文件不存在。

为什么会这样呢?

在网上找了找答案,发现每个人说的都不一样,而且mysql.server文件中根本就不存在创建/var/run/mysqld/mysqld.sock文件的语句。

1.解决办法:

$mysql --help

根据帮助可以看到,mysql默认使用socket文件/var/run/mysqld/mysqld.sock文件,端口3306来连接mysql服务器。所以我们可以修改默认连接参数来试一试。

$mysql --socket=/tmp/mysql.sock

那么,怎样知道需要把socket修改为/tmp/mysql.sock呢?

我是根据查看mysql进程得到的消息,使用如下命令:

$ps aux|grep mysql

可以看到启动的mysql进程使用了参数--socket=/tmp/mysql.sock --port=3306。所以使用命令:

$mysql --socket=/tmp/mysql.sock后就能够成功连接上mysql服务器了。

2.追根究底

根据命令

$mysql --help

的输出结果可以看到,mysql会按顺序读取配置文件/etc/my.conf,/etc/mysql/my.conf,/usr/etc/my.con,~/.my.conf

在/etc/my.conf中可以看到

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

port = 3306

socket = /tmp/mysql.sock

这就是为什么mysql服务器启动后使用的socket是/tmp/mysql.sock

在/etc/mysql/my.conf中可以看到

[client]

port = 3306

socket = /var/run/mysqld/mysqld.sock

[mysqld_saft]

socket = /var/run/mysqld/mysqld.sock

[mysqld]

port = 3306

socket = /var/run/mysqld/mysqld.sock

这样,两个文件设置都匹配,导致/etc/mysql/my.conf中的[client]覆盖了/etc/my.conf中的[client]设置,所以连接不正确。最简单的办法是删除这个文件

$sudo mv /etc/mysql/my.conf /etc/mysql/mysql.conf_backup

然后再使用默认参数连接mysql服务器就正常了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值