首页 > 数据库 >ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mys

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mys

时间:2023-02-15 11:36:29浏览次数:72  
标签:socket lib sock mysqld mysql var

在Kylin服务器上安装好mysql后登录时出现以下问题:

查找mysql.sock 文件,命令如下:

find -name mysql.sock

结果如下:

 

如果文件不存在,

mysql.sock丢失,mysqld_safe启动报错

重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误:

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

于是,我检察mysql状态:

       > /etc/rc.d/init.d/mysqld  status  

          显示stop,未运行。

       >/etc/rc.d/init.d/mysqld  restart

         Stopping mysqld: [ OK ]

  MySQL Daemon failed to start.

         Starting mysqld: [ FAILED]

       >ps -ef | grep mysql

         root 28221 27474 0 14:18 pts/0 00:00:00 grep mysql   只有这一条

至此,我可以确定,mysql无法启动。

我开始排错,首先发现/tmp/mysql.sock不存在

        >vim /etc/my.cnf

          socket=/var/lib/mysql/mysql .sock

          /var/lib/mysql/mysql .sock同样不存在

        >find / -name mysql.sock

          显示为空,未查询到mysql.sock文件,mysql.sock文件丢失了。

我看网上有人说mysql.sock套接字文件可以简单地通过重启服务器重新创建得到它,

         >init 6      重启命令

           重启后发现错误还是那样,没有任何改变,mysql.sock重启服务器未自动生成。

接下来了解到mysql.sock是一个临时文件,在mysql启动时会自动生成,我的服务器未启动,自然就没有mysql.sock文件。

我尝试安全启动模式,mysqld_safe试图通过工作目录找到服务器和数据库,但mysqld_safe还是失败。

       >mysqld_safe &
         Starting mysqld daemon with databases from ....../mysql/var 
         STOPPING server from pid file   .......pid

         130802 15:17:11 mysqld ended

各种命令尝试无效的情况下,我开始了本次最大的收获----学会看错误日志。

在错误日志中,启动失败的原因极为明显,file ‘./mysql-bin。000004’ not found,failed to open!

 mysql开启了bin日志功能,到数据库根目录查看该文件是存在的,可能是文件权限的问题。

       >chown -R mysql:mysql /....../mysql/var

       >mysqld_safe &

       >/etc/rc.d/init.d/mysqld  restart

         Stopping mysqld: [ OK ]

         Starting mysqld: [ OK]

成功启动了!~

 

 此时mysql.sock文件出现了,在/var/lib/mysql/mysql .sock。如下图所示,以”s”开头的文件都是socket文件。

> mysql -u root -p

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

/tmp/mysql.sock

          解决这个错误很简单,因为/tmp/mysql.sock不存在,用这样的方法:

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

以”l”开头的文件是软链接文件。或者可以通过修改/etc/my.cnf文件来修正它。

   成功解决了!~

 

文件存在,但是不存在/var/lib/mysql目录下,做一个软连接即可,在这之前先确定当前用户为root用户,命令为 whoami

 

由普通用户切换到root用户,su 回车,输入密码即可进入root

关闭mysql数据库,命令如下:

service mysqld stop

 

将/tmp/mysql.sock 设置软连接到 /var/lib/mysql/mysql.sock

命令如下:

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

重新启动mysql

service mysqld start

 

重新登录mysql数据库,成功

如果还是报ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)

则打开my.cnf文件,

查找my.cnf文件的位置

find -name my.cnf

我的文件位置是 ./etc/my.cnf

打开my.cnf文件

vim /etc/my.cnf

 

找到[mysqld],在它的后面任意下一行添加如下代码:

socket=/var/lib/mysql/mysql.sock

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/usr/local/mysql/data/mysql.sock
user=mysql
port=3306
character-set-server=utf8

symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=utf8
port=3306
socket=/usr/local/mysql/data/mysql.sock

[mysql]
default-character-set=utf8
socket=/usr/local/mysql/data/mysql.sock

保存退出,重启mysql

标签:socket,lib,sock,mysqld,mysql,var
From: https://www.cnblogs.com/liunaixu/p/17122132.html

相关文章

  • CentOS中使用Dockerfile部署带websocket的SpringBoot的jar包
    场景CentOS7中使用Dockerfile部署后台jar包在上面使用Dockerfile定制的镜像部署了一个普通的jar包, 如果是jar包里面包含websocket的使用,流程也是一样。websocket所使用的......
  • CentOS中使用Dockerfile部署初始化sql文件的mysql
    场景Docker中部署mysql数据库CentOS中使用Dockerfile部署带websocket的SpringBoot的jar包在上面部署Mysql镜像和会使用Dockerfile的基础上。如果要实现定制化一个mysql镜像,......
  • eclipse 快速lib目录下jar包批量导入项目
    1.情景展示在实际开发过程中,尤其是:非maven管理jar包的老项目,我们往往会遇到这样的情况:从svn或者git上下载下来的JavaWeb项目,lib目录下的jar包总是没有全部构建到项目当中:如......
  • mysql从库延迟检查脚本
    脚本如下:[root@dev-env23scripts]#vicheck_slave_delay.sh#!/bin/bashcheck_time=`date"+%Y-%m-%d,%H:%M:%S"`mysql-hlocalhost-uroot-p123456-e'showsla......
  • MySQL使用笔记
    查询结果导出到文件终端命令下直接导出除了在mysql命令行下导出查询结果,还可以在终端直接导出查询结果到文件中:mysql-uroot-p-e"select*fromtest">xxx.csv如......
  • docker-desktop 启动mysql 5.7
    1.创建文件夹:D:/mysql_workspace/mysql/etc/mysql/data(存储mysql的数据目录)    D:/mysql_workspace/mysql/etc/mysql/tmp(存储mysql的临时目录)D:/mysql......
  • MySQL中,把查询的结果拼接成一个字符串。
    用法:group_concat(待拼接对象)输出:用逗号进行拼接后的字符串selectgroup_concat(emp_no)asemployeesfromdept_emp;  /*结果:employees       ......
  • 发送Socket消息(给feiq、飞鸽)
    发送Socket消息(给feiq、飞鸽)staticvoidSendIPmsg(stringMsgStr,stringIPstring){ //1.准备两个必要条件 intport=2425; IPAddressip=IPAddress.Parse(IPst......
  • mysql 主从复制
    概述主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库对这些日志重新执行(也叫重做),从而是的从库和主库数据保持同步。mysql也支持一台主库......
  • 1.mysql架构
    mysql架构mysql的基础架构图innoDb引擎的4大特性,区别插入缓冲(Insertbuffer/ChangeBuffer)产生的原因:索引存在在磁盘,主键索引由于天然自增,无须磁盘的随机IO,只......