MySQL 报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket
MySQL 报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket
一、错误现场还原:
下面我们通过三种方式来连接,然后观察提示的错误信息:
1、直接使用“mysql”命令,不带主机名参数;
2、使用带了主机名“localhost”参数的“mysql -h localhost”命令;
3、使用带了主机名“127.0.0.1”参数的“mysql -h 127.0.0.1”命令。
1、[root@lam7 opt]# mysql
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
2、[root@lam7 opt]# mysql -h localhost
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
[root@lam7 opt]# mysql -h 127.0.0.1 (用此方法是可以进入到MariaDB ,可以进入之后忽略此问题)
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 244
Server version: 10.1.19-MariaDB Source distribution
Copyright 2000, 2013, Oracle, Monty Program Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
3、[root@lam7 opt]# 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)、端口是否打开
[root@lam7 opt]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 57436 mysql 17u IPv6 160456 0t0 TCP *:mysql (LISTEN)
(2)、mysqld服务是否正在运行(小七这边用的是centos7,所以会提示使用“/bin/systemctl status mysqld.service”)
[root@lam7 opt]# service mysqld status
Redirecting to /bin/systemctl status mysqld.service
mysqld.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
(3)、如果mariaDB,同样方法查服务是否正在运行:
[root@lam7 opt]# service mariadb status
Redirecting to /bin/systemctl status mariadb.service
mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)
Active: inactive (dead)
(4)、mysqld服务是否正在运行(此现状是mysql服务正常运行)
[root@lam7 opt]# service mariadb status
Redirecting to /bin/systemctl status mariadb.service
mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
Active: active (running) since 二 2016-11-22 20:09:01 CST; 10min ago
2、确定“socket”文件正确位置:
确定mysql服务正常运行后,产生此错误的原因只剩下“socket”文件路径不正确了,我们可以使用“find”命令或者“lsof”命令来确定socket文件的正确路径:
[root@lam7 opt]# lsof -c mysqld|grep sock$
lsof: WARNING: can’t stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
mysqld 57436 mysql 18u unix 0xffff88000b55f440 0t0 160457 /opt/lampp/var/mysql/mysql.sock
[root@lam7 opt]# find / -name ‘*.sock’
/storage/db/mysql/mysql.sock
四、故障解决方法:
解决方案一:
修改“/etc/my.cnf”配置文件,在/etc/php.ini文件中"[MySQL]“项下找到"mysql.default_socket”,并设置其值指向正确的mysql服务socket文件即可, 在配置文件中添加“[client]”选项和“[mysql]”选项,并使用这两个选项下的“socket”参数值,与“[mysqld]”选项下的“socket”参数值,指向的socket文件路径完全一致。如下:
[mysqld]
datadir=/storage/db/mysql
socket=/storage/db/mysql/mysql.sock
…省略n行
[client]
default-character-set=utf8
socket=/storage/db/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/storage/db/mysql/mysql.sock
修改完后,重启mysqld服务,即可解决此问题。
解决方案二:
使用“ln -s /storage/db/mysql/mysql.sock /var/lib/mysql/mysql.sock”命令,将正确的socket文件位置,软链接到提示错误的socket文件路径位置,即可解决此问题:
[root@lam7 opt]# ls /var/lib/mysql/mysql.sock
ls: 无法访问/var/lib/mysql/mysql.sock: 没有那个文件或目录
[root@lam7 opt]# ln -s /storage/db/mysql/mysql.sock /var/lib/mysql/mysql.sock
[root@lam7 opt]# ls /var/lib/mysql/mysql.sock
/var/lib/mysql/mysql.sock
这边讲述了mysql提供的“mysql”、“mysqldump”、“mysqladmin”等命令提示“ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘***’ (2)”的解决方法,如果需要解决“php”、“perl”、“python”等脚本语言提示此错误的问题
MySQL 报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket的更多相关文章
- mac 安装mysql 报错“ERROR 2002 (HY000): Can not connect to local MySQL server through socket '/tmp/mysql.sock' (2)” 解决办法
首先安装 homebrew 再 brew install mysql 之后连接 mysql 无论是登录还是修改初始密码都会报如下的错误 ERROR 2002 (HY000): Can not conn ...
- 长久不用的mysql报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
mac上安装过mysql: 然而,尝试连接时报错: $ mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to lo ...
- mysql 报错ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ ( ...
- 启动mysql报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
mysql之前还好好的,突然就启动不了了,我也很纳闷,原来是服务没有启动 netstat -ntlp 后,发现并没有启动 于是我试着启动mysql service mysqld start 查看了my ...
- MySQL登录报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
[root@pisphkdcbsql01 mysql3307]# /opt/mysql3307/bin/mysql -upisp -ppisp@ mysql: [Warning] Using a pa ...
- mac下安装mysql 连接时候报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
http://segmentfault.com/q/1010000000094608 同样的问题,先在网上搜了下其他人解决这个问题的方法,是去修改mysql.cnf文件添加mysql.sock文件路径 ...
- Mac下Mysql启动异常["ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"]
在mac下使用brew安装mysql,之前没有使用过,今天启动的时候发现启动不了 huijundeMacBook-Pro:bin huijunzhang$ mysql ERROR (HY000): C ...
- mariadb报:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111 "Connection refused")
我这边移除了mysql.sock文件后,重启服务就成功了. 还有一种情况,就是加入galera后,可能是server.cnf配置信息出了问题导致的,修改后,重新运行galera即可,数据库就可以启动成 ...
- 解决Mysql错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
需要重启服务器:sudo /etc/init.d/mysql restart
- MySQL无法启动:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
1 详细异常 ct 11 17:31:51 bd02.getngo.com mysqld[20513]: 2019-10-11T09:31:51.187848Z 0 [Note] /usr/sbin/ ...
随机推荐
- python常见面试题讲解(七)合并表记录
题目描述 数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个数然后输入成对的in ...
- 机器学习-线性分类-支持向量机SVM-SMO算法-14
目录 1. SVM算法总结 2. SMO算法 1. SVM算法总结 选择 核函数 以及对应的 超参数 为什么要选择核函数? 升维 将线性问题不可分问题 升维后转化成 线性可分的问题 核函数 有那些? ...
- (已解决)vscode python 代码高亮异常 - 引入的包不显示
问题情况:识别不了引入的包,代码一片白花花的. 解决方法:点最左下角的齿轮,打开设置,搜索 language,把 python 的 language server 改成 pylance,如下图: 如果 ...
- Pgsql之查询一段时间内的所有日期
前几天干活儿的时候,项目中有这么个需求,需要用pgsql查询两个日期间的所有日期,包括年月日,下面贴代码: 1 select date(t) as day 2 from 3 generate_seri ...
- 配置Maven项目的pom.xml时遇到input contained no data问题
1.问题 2.解决 我发现每次当我修改一些部分之后,就会遇到这个问题 我遵循了他的建议重新排列标记属性,然后重新加载就解决了报错 个人怀疑是修改后并没有识别之类的? 最终原因:是我在Maven项目中的 ...
- ONVIF网络摄像头(IPC)客户端开发—RTSP RTCP RTP加载AAC音频流
前言: RTSP,RTCP,RTP一般是一起使用,在FFmpeg和live555这些库中,它们为了更好的适用性,所以实现起来非常复杂,直接查看FFmpeg和Live555源代码来熟悉这些协议非常吃力, ...
- [转帖]Linux 性能监控 Sar (Sysstat) 示例
https://bbs.huaweicloud.com/blogs/345343# [摘要] 使用 sar,您可以实时监控各种 Linux 子系统(CPU.内存.I/O..)的性能,还可以持续收集 ...
- [转帖]被误解的CPU利用率、超线程、动态调频 —— CPU 性能之迷 Part 1
https://blog.mygraphql.com/zh/notes/hw/hyper-threading/ 引 性能测试.压力测试.业务系统性能容量评估.这 3 件事,可以认为是大部分程序员/软件 ...
- [转帖]tcp、http和socket的区别
https://www.jianshu.com/p/88d69454bdde 一:tcp协议 tcp协议属于传输层协议(UDP也属于传输层协议,但是UDP协议是无状态的).建立一个TCP连接需要三次握 ...
- [转帖]TiDB 使用 dumpling 导出数据,并使用 lightning 导入到另一个 TiDB 库
本文介绍从 TiDB-A 库导出数据到 TiDB-B 库: 导出 Dumpling 包含在 tidb-toolkit 安装包中,可在此下载. 从 TiDB/MySQL 导出数据 需要的权限 SELEC ...