mysql登录时报socket找不到的问题及解决

 更新时间:2024年07月16日 11:01:01   作者:我是李超人  
这篇文章主要介绍了mysql登录时报socket找不到的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql登录时报socket找不到

mysqld.socket文件是用来给客户端和服务端进行通信的,如果通过源码方式安装,默认情况下这个文件会被放在tmp目录下。

当然也可以手动指定存放位置,通过修改/etc/my.cnf文件的socket参数来修改mysqld.socket的存放路径。

例如:

[mysqld]
socket=/data/mysqldb/mysqld.sock

但是这样一来在登录的时候就会出现如下问题

[root@s186 /data/mysql]#/usr/local/mysql/bin/mysql -uroot -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

mysql客户端在登录的时候默认会去/tmp/mysql.sock这个目录查找mysqld.socket文件,由于修改了路径自然是找不到的。

可以通过修改/etc/my.cnf文件给客户端指定位置。

添加如下配置:

[client]
socket=/data/mysqldb/mysqld.sock

这样客户端在登录时就会去指定的目录查找mysqld.socket文件,

注意client的socket要和mysqld是一样的,因为客户端和服务端通信靠的就是这个文件,肯定要一致

通过上面的案例应该明白为何服务端可以启动,但是登录的时候会报socket找不到的问题了。

出现socket找不到的问题大致有以下几种情况

1.mysqld和client的socket配置路径不一样

比如像下面这样的配置

[mysqld]
socket=/data/mysqldb/mysqld.sock
[client]
socket=/data/mysqldb/mysql.sock

路径是一样的,但是文件名不一样,一个是mysqld.socket,一个是mysql.socket

socket文件是由服务端生成的,而客户端找的就是服务端生成的socket文件,所以client的配置要和mysqld一样

2.在cmake的时候指定了路径

比如像下面这一段cmake指令

在参数DMYSQL_UNIX_ADDR=/tmp/mysqld.sock中指定了socket的位置

那么/etc/my.cnf上mysqld上的socket和client上的socket都需要和这个一致

因为cmake在执行完之后,mysqld这个执行文件才会生成,并且这个执行文件中会记录你指定的参数

那么当执行mysqld的时候,它就会在你指定的目录下去查找

这个时候/etc/my.cnf下的mysqld和client的socket必须和指定的路径保持一致

否则mysqld执行都会失败(会报change dir…这样的错误)

cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql56 -DMYSQL_DATADIR=/data/mysqldb/data -DSYSCONFDIR=/etc/my.cnf  -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/data/mysqld.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=utf8 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

解决方法

解决socket的核心就是在登录的时候告诉客户端socket文件的位置

要么通过/etc/my.cnf文件指定位置

要么就是在登录的时候指定位置

像下面这样:

mysql -uroot -p --socket=/data/mysqldb/mysqld.sock

还有一种方式就是创建软连接,因为客户端默认会到/tmp下找mysqld.socket文件

我不通过配置文件,在tmp下建一个软连接就可以了

ln -s /data/mysqldb/mysqld.sock mysql.socket

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL学习之三大范式详解小白篇

    MySQL学习之三大范式详解小白篇

    本篇文章为大家介绍了MYSQL数据库学习中三大范式的规则详解,有需要的朋友可以借鉴参考下,希望可以对大家的数据库学习有所帮助
    2021-09-09
  • SQL中Limit的基本与高级用法详解

    SQL中Limit的基本与高级用法详解

    在SQL中LIMIT是一个用于限制结果集返回的行数的子句,这篇文章主要给大家介绍了关于SQL中Limit的基本与高级用法,文中通过代码介绍的非常详细,对大家学习或者使用sql具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-04-04
  • mysql中workbench实例详解

    mysql中workbench实例详解

    在本篇文章里小编给大家分享了关于mysql中workbench实例内容,有兴趣的朋友们学习下。
    2019-01-01
  • CentOS7下二进制安装mysql 5.7.23

    CentOS7下二进制安装mysql 5.7.23

    这篇文章主要为大家详细介绍了CentOS7下二进制安装mysql 5.7.23,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • MySQL 导入慢的解决方法

    MySQL 导入慢的解决方法

    MySQL导出的SQL语句在导入时有可能会非常非常慢,在导出时合理使用几个参数,可以大大加快导 入的速度。
    2010-12-12
  • MySQL SHOW STATUS语句的使用

    MySQL SHOW STATUS语句的使用

    这篇文章主要介绍了MySQL SHOW STATUS语句的使用,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-12-12
  • Mysql分库分表之后主键处理的几种方法

    Mysql分库分表之后主键处理的几种方法

    Mysql分库分表之后,主键如何处理?本文主要介绍了Mysql分库分表之后主键处理的几种方法,具有一定的参考价值,感兴趣的可以了解一下
    2022-02-02
  • MySQL数据库CPU飙升到100%的详细解决方案

    MySQL数据库CPU飙升到100%的详细解决方案

    在监控线上数据库的运行是否安全、正常的过程中,cpu使用率是一个重要的指标,一旦cpu使用率飙升至90%+甚至达到100%,必然会对数据库的正常工作产生影响,下面这篇文章主要给大家介绍了关于MySQL数据库CPU飙升到100%的详细解决方案,需要的朋友可以参考下
    2023-05-05
  • MySQL如何为字段添加默认时间浅析

    MySQL如何为字段添加默认时间浅析

    这篇文章主要给大家介绍了关于MySQL如何为字段添加默认时间的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • 一条sql详解MYSQL的架构设计详情

    一条sql详解MYSQL的架构设计详情

    这篇文章主要介绍了一条sql详解MYSQL的架构设计详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-09-09

最新评论