zoukankan      html  css  js  c++  java
  • 【转】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服务器就正常了。

  • 相关阅读:
    记一次授权的APK渗透测试
    Web.config在渗透中的作用
    ctf中关于syscall系统调用的简单分析
    【文件包含&条件竞争】详解如何利用session.upload_progress文件包含进行RCE
    利用python免杀cs shellcode
    记一次ARM架构的ROP利用
    改造冰蝎对抗waf&OpenRASP计划-初探
    java后台管理 开源_12款开源的JAVA后台管理项目
    ECS 选款利器!PTS助您快速上云!
    Ocelot 负载均衡
  • 原文地址:https://www.cnblogs.com/andy071001/p/3393450.html
Copyright © 2011-2022 走看看