zoukankan      html  css  js  c++  java
  • mysql sock找不到

    今天运行人员发现,运营后台进不去,登录后果然有问题

    首先介绍下mysql.sock文件:

    MySQL有两种来连接方式,一种是通过TCP/IP,就是用-h参数指定要连接的mysqlserverI的IP,另一种是套接字socket,在这里就是mysql.sock文件。当我们的客户端与数据库服务器(mysqlserver)在同一台机器上时,就通过该文件来连接数据库。
     

    使用sql语句登录MySQL出现如下报错

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

    进入/tmp 文件夹,果然tmp 下面mysql.sock文件不存在了,

    启动mysqld 服务失败

     sudo service mysqld restart

    非常疑惑的是什么问题导致的mysq.sock 文件找不到的呢?

    分析:找不到mysql.sock文件,自然连接不了

    原因:1)mysql服务没启动;2)sock文件路径设置错误 ;3)sock文件所在目录的权限问题;4)这个文件直接丢失了

    解决步骤:

    1)检查服务有没有启动(本次故障属于这种)

    重启,问题解决

    $ sudo /etc/init.d/mysql restart

    2)在my.cnf文件中查看socket参数指定的路径,查看这个路径有没有访问权限

    3)到那个路径下去看一下到底有没有这个mysql.sock文件,如果该路径下没有sock文件,我们先用find命令找出这个文件的位置,如果find也找不到,重启一下mysql服务即可,会自动生成一个。然后把他复制到soctek参数指定的路径下去。或者建立一个软连接,这也是比较推荐的方法,比如这个文件在/var/lib/mysql.sock,socket参数指定的路径是/tmp/mysql.sock。

    我们就可以这样创建:

    ln -s /var/lib/mysql.sock /tmp/mysql.sock

    ,创建完之后,再尝试连接

    另外需要注意的是,mysql.sock文件默认是在/tmp下,数据库启动的时候,系统也默认去这个文件下找mysql.sock文件,但是/tmp目录有时会被某个定时任务给清除,那么我们可以给/tmp目录加一个sticky权限,保护其不被删除,

    chmod +t /tmp即可

    ,使得/tmp下的文件只能由文件所有者和root用户才能删除

    4)如果还是报那个错误,我们就用TCP/IP来连接

    mysql -uroot -h 192.168.142.160 -p     #-h后面是数据库服务器的IP
    
    或者 mysql -uroot -h 127.0.0.1 -p

    参考连接:https://blog.csdn.net/keil_wang/article/details/88641735

  • 相关阅读:
    three.js raycaster射线碰撞的坑 (当canvas大小 不是屏幕大小是解决拾取物体的办法)
    如何去掉IE文本框后的那个X css代码
    解决input 有readonly属性 各个浏览器的光标兼容性问题
    centos的基本命令03(du 查看文件详情,echo清空文件内容)
    centos的 / ~
    centos的基本命令02
    centos的基本命令01
    关系性数据库和非关系型数据库
    绝对路径和相对路径的理解
    linux的目录和基本的操作命令
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452917.html
Copyright © 2011-2022 走看看