关闭

Ubuntu下出现Mysql error(2002)的解决方法

标签: mysqlubuntusocket服务器server作业
18412人阅读 评论(3) 收藏 举报
分类:

      过了一阵子后,为了写分布式作业,重新使用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
0

猜你在找
深度学习基础与TensorFlow实践
【在线峰会】前端开发重点难点技术剖析与创新实践
【在线峰会】一天掌握物联网全栈开发之道
【在线峰会】如何高质高效的进行Android技术开发
机器学习40天精英计划
Python数据挖掘与分析速成班
微信小程序开发实战
JFinal极速开发企业实战
备战2017软考 系统集成项目管理工程师 学习套餐
Python大型网络爬虫项目开发实战(全套)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:529891次
    • 积分:6884
    • 等级:
    • 排名:第3118名
    • 原创:141篇
    • 转载:1篇
    • 译文:0篇
    • 评论:104条
    最新评论