永久解决

修改/etc/my.cnf

添加以下内容到/etc/my.conf:
[client]
socket = /Data/mydata/mysql.sock
[mysqld]

socket = /Data/mydata/mysql.sock

有时候,当我们使用“mysql”、“mysqladmin”、“mysqldump”等命令管理数据库时,服务器抛出类似如下错误:

mysql     -hlocalhost    -uroot    -pXXX 
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

mysql -h 127.0.0.1 (PS:有些用户也会出现此问题)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

连接是不会产生标题中的错误的(第三种方式这里产生的是由于密码问题拒绝访问的错误信息)

二、错误产生原因解析:

  这是由于我们连接数据库使用的主机名参数为“localhost”,或者未使用主机名参数、服务器默认使用“localhost”做为主机名。 使用主机名参数为“localhost”连接mysql服务端时,mysql客户端会认为是连接本机,所以会尝试以socket文件方式进行连接(socket文件连接方式,比“ip:端口”方式效率更高),这时根据配置文件“/etc/mysql.cnf”的路径,未找到相应的socket文件,就会引发此错误。

三、修复故障前准备:

1、看mysql服务是否在运行:

  由于“socket”文件是由mysql服务运行时创建的,如果提示“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '***' (2)”,找不到“socket”文件,我们首先要确认的是mysql服务是否正在运行。

#1:端口是否打开


  1. [root@lam7 opt]# lsof -i:3306

  2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

  3. mysqld 57436 mysql 17u IPv6 160456 0t0 TCP *:mysql (LISTEN)

#2:mysqld服务是否正在运行(小七这边用的是centos7,所以会提示使用“/bin/systemctl status mysqld.service”)


  1. [root@lam7 opt]# service mysqld status

  2. Redirecting to /bin/systemctl status mysqld.service

  3. mysqld.service

  4. Loaded: not-found (Reason: No such file or directory)

  5. Active: inactive (dead)

#3:如果mariaDB,同样方法查服务是否正在运行:


  1. [root@lam7 opt]# service mariadb status

  2. Redirecting to /bin/systemctl status mariadb.service

  3. mariadb.service - MariaDB database server

  4. Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)

  5. Active: inactive (dead)

#4mysqld服务是否正在运行(此现状是mysql服务正常运行)


  1. [root@lam7 opt]# service mariadb status

  2. Redirecting to /bin/systemctl status mariadb.service

  3. ● mariadb.service - MariaDB database server

  4. Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)

  5. Active: active (running) since 二 2016-11-22 20:09:01 CST; 10min ago

2、确定“socket”文件正确位置:

  确定mysql服务正常运行后,产生此错误的原因只剩下“socket”文件路径不正确了,我们可以使用“find”命令或者“lsof”命令来确定socket文件的正确路径:


  1. [root@lam7 opt]# lsof -c mysqld|grep sock$

  2. lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs

  3. Output information may be incomplete.

  4. mysqld 57436 mysql 18u unix 0xffff88000b55f440 0t0 160457 /opt/lampp/var/mysql/mysql.sock

  5. [root@lam7 opt]# find / -name '*.sock'

  6. /storage/db/mysql/mysql.sock

四、故障解决方法:

解决方案一:

  修改“/etc/my.cnf”配置文件,在/etc/php.ini文件中"[MySQL]"项下找到"mysql.default_socket",并设置其值指向正确的mysql服务socket文件即可,  在配置文件中添加“[client]”选项和“[mysql]”选项,并使用这两个选项下的“socket”参数值,与“[mysqld]”选项下的“socket”参数值,指向的socket文件路径完全一致。如下:


  1. [mysqld]

  2. datadir=/storage/db/mysql

  3. socket=/storage/db/mysql/mysql.sock

  4. ...省略n行

  5. [client]

  6. default-character-set=utf8

  7. socket=/storage/db/mysql/mysql.sock

  8. [mysql]

  9. default-character-set=utf8

  10. socket=/storage/db/mysql/mysql.sock

修改完后,重启mysqld服务,即可解决此问题。

解决方案二: 

  使用“ln -s /storage/db/mysql/mysql.sock /var/lib/mysql/mysql.sock”命令,将正确的socket文件位置,软链接到提示错误的socket文件路径位置,即可解决此问题:


[root@weops-05 /]# mysql     -hlocalhost    -uroot    -pXX
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@weops-05 /]# ln -s /var/run/mysql/default.mysql.socket /var/lib/mysql/mysql.sock
[root@weops-05 /]# mysql     -hlocalhost    -uroot    -pXXX
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 23304
Server version: 5.7.29-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit
Bye
[root@weops-05 /]# ls -ltr /var/lib/mysql/mysql.sock

lrwxrwxrwx 1 root root 35 12月  5 21:46 /var/lib/mysql/mysql.sock -> /var/run/mysql/default.mysql.socket

[root@weops-05 /]# mysql       
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@weops-05 /]#  说明不是免密登录

mysql 登录错误 ERROR 2002 (HY000)相关推荐

  1. 解决一个MySQL登录报ERROR 2002 (HY000)错的问题

    一.背景 今天上午使用mysql-5.7.21-el7-x86_64.tar.gz包安装MySQL的时候报错如下:ERROR 2002 (HY000): Can't connect to local ...

  2. 解决MySQL报错ERROR 2002 (HY000)【转】

    今天在为新的业务线搭架数据库后,在启动的时候报错 root@qsbilldatahis-db01:/usr/local/mysql/bin# ./mysql ERROR 2002 (HY000): C ...

  3. 解决Linux MySQL报错ERROR 2002 (HY000)

    ---------------------------------1--------------------------------- 在Linux安装MySQL有时候会出现[mysql]ERROR ...

  4. mysql 5.6 2002_MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server

    http://www.jb51.net/article/56952.htm 在安装好了MySQL之后,使用了新的配置文件后,MySQL服务器可以成功启动,但在登陆的时候出现了ERROR 2002 (H ...

  5. mysql错误码2002_MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket

    在安装好了MySQL之后,使用了新的配置文件后,MySQL服务器可以成功启动,但在登陆的时候出现了ERROR 2002 (HY000): Can't connect to local MySQL se ...

  6. 解决mysql报错ERROR 2002 (HY000)

    解决Mysql报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/my ...

  7. mysql 2002_解决MySQL报错ERROR 2002 (HY000)

    今天在为新的业务线搭架数据库后,在启动的时候报错 root@qsbilldatahis-db01:/usr/local/mysql/bin# ./mysql ERROR 2002 (HY000): C ...

  8. Mysql安装错误ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)

    1.具体安装配置步骤可参考以下方法 https://blog.csdn.net/qq_40933711/article/details/107795888 2.在修改密码时,我出现了错误 ERROR ...

  9. mysql启动问题ERROR 2002 ( HY000 ) : Can‘t connect to local MYSQL server through socket /usr/local/mysql/

    MYSQL启动报错:ERROR 2002 ( HY000 ) : Can't connect to local MYSQL server through socket /usr/local/mysql ...

最新文章

  1. 我的Android进阶之旅------gt;怎样在多个LinearLayout中加入分隔线
  2. springmvc+mybatis,在mybatis逆向工程的基础上使用模板自动生成controller层代码
  3. SAP Spartacus pageSlot一览
  4. 二级计算机vf题型,2010计算机等级考试二级VF考试题型与解题技巧
  5. c语言输入数字 获取星期几,输入字母,判断星期几,求大神指点
  6. 基于Packet Tracer 的校园网络设计方案(计算机网络与通信技术课程实验)(二)——IP网络仿真配置
  7. Linux下用ffmpeg轉PSP影片 (MP4/AVC格式)
  8. 吴恩达机器学习——第一周学习笔记
  9. Mac MySQL忘记密码解决办法
  10. 解决打开WORD时提示的:“无法复制文件:无法读源文件或磁盘”
  11. linux python 调试_Python安装与环境配置
  12. Scrapy 西瓜皮框架
  13. 【读点论文】Masked Autoencoders Are Scalable Vision Learners 完型填空应用到视觉处理上
  14. 手写数字识别——KNN算法的应用
  15. 微信朋友圈点赞如何设计测试用例,微信发语音消息,购物车,支付页面如何设计软件测试用例?
  16. 听说你们害怕异常?保姆式的图文手把手教你如何调试出程序的 bug
  17. python 识别滑块验证码
  18. Python实现生命游戏(Game of Life)
  19. 多相机视觉系统的坐标系统标定与统一及其应用
  20. Galera Cluster for MySQL 详解(二)——安装配置

热门文章

  1. 罗马神话缪斯_缪斯与边缘– Adob​​e Web Designer的工具
  2. [教程]域名解析之:SPF 记录设置说明
  3. PDF文件只能打印出第一页
  4. mc服务器物品id,我的世界物品id1period;12period;2 | 手游网游页游攻略大全
  5. Boltdb源码分析——bolt.Open
  6. python拯救爱情
  7. 7-5 冒泡法排序(20 分)
  8. Pygame开发打飞机游戏
  9. 拉钩教育课程管理系统接口文档
  10. 【VUE项目实战】32、权限管理-实现角色列表