阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Can’t connect to local MySQL server through socket

394次阅读
没有评论

共计 2756 个字符,预计需要花费 7 分钟才能阅读完成。

MySQL,mysqldump,php 连接 mysql 服务常会提示下面错误:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

产生此问题的原因一般有两个:

1、mysql 服务未正常运行:

由于 mysql 的 socket 文件是由 mysqld 服务启动时创建的,如果 mysqld 服务未正常启动,socket 文件自然也不会被创建,当然会找不到 socket 文件了。对于判断 mysql 服务是否启动,我们可以使用下面命令:

# 1、端口是否打开

[root@aiezu.com ~]# lsof -i:3306

COMMAND  PID  USER  FD  TYPE DEVICE SIZE/OFF NODE NAME

mysqld  12207 mysql  14u  IPv4  52350      0t0  TCP *:mysql (LISTEN)

# 2、mysqld 服务是否正在运行

[root@aiezu.com ~]# service mysqld status

mysqld (pid  4717) is running…

2、socket 文件路径在配置文件中设置不完整:

这一般是由于我们修改了 mysql 配置“/etc/my.cnf”引起的。比如我们修改了配置文件中“[mysql]”选项下的“socket”参数,而未指定“[client]”、“[mysql]”选项的“socket”参数,导致 mysql 使用默认的 socket 文件位置去寻找 socket 文件,从而导致未找到 socket 文件而引发此错误。

下面是解决方法

1、mysql 服务未正常运行:

如果是服务未启动,我们运行“service mysqld start”启动服务即可。如果服务启动不了,就去查看 mysql 服务日志,寻找原因并解决再启动

[root@aiezu.com ~]# service mysqld start

Starting mysqld:                                          [OK]

[root@aiezu.com ~]# lsof -i:3306

COMMAND  PID  USER  FD  TYPE    DEVICE SIZE/OFF NODE NAME

mysqld  14109 mysql  10u  IPv4 247183583      0t0  TCP *:mysql (LISTEN)

[root@aiezu.com ~]# service mysqld status

mysqld (pid  14109) is running…

2、完善 mysql 配置文件:

如果确认 mysql 服务正常运行,还提示文章标题的此错误,那就是“/etc/my.cnf”配置文件的问题了。解决办法是修改“/etc/my.cnf”配置文件,在配置文件中添加“[client]”选项和“[mysql]”选项,并使用这两个选项下的“socket”参数值,与“[mysqld]”选项下的“socket”参数值,指向的 socket 文件路径完全一致。如下:

[mysqld]

datadir=/storage/db/mysql

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

… 省略 n 行(爱 E 族)…

[client]

default-character-set=utf8

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

[mysql]

default-character-set=utf8

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

其中 socket 等于的路径就是 socket 文件的位置,我们只要修改 my.cnf 文件, 告诉 mysql,mysqldump,mysqladmin 等命令,mysql 服务的 socket 文件位置在哪里,然后重启 mysqld 服务即可。

3、php 连接 mysql 服务提示 ”Can’t connect to local MySQL server through socket…” 的解决方法

有时候 mysql 服务正常运行, 用户名密码也完全正确,使用 php 的 mysql_connect 函数却连接不了 mysql,调用 php 的 mysql_error() 函数提示“Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’”,这是我们需要修改 /etc/php.ini 文件。

在 /etc/php.ini 文件中 ”[MySQL]” 项下找到 ”mysql.default_socket”,并设置其值指向正确的 mysql 服务 socket 文件即可,如:

[MySQL]

… 省略 n 行 …

mysql.default_socket = “/storage/db/mysql/mysql.sock”

4、Python 连接 mysql 提示 ”Can’t connect to local MySQL server through socket…” 的解决方法:

在连接 mysql 数据库函数中指定 socket 文件,如下:

#!/usr/bin/python

from MySQLdb import connect

conn = connect(db=”pzy”, user=”root”, host=”localhost”, unix_socket=”/storage/db/mysql/mysql.sock”)

cur = conn.cursor()

count=cur.execute(“show databases”)

print ‘there has %s dbs’ % count

conn.commit()

conn.close()

5. php pdo 连接 mysql 提示 ”Can’t connect to local MySQL server through socket…” 的解决方法:

同样在连接字符串添加 mysql socket 文件的位置即可,如下:

<?php

$dsn = “mysql:host=localhost;dbname=pzy;unix_socket=/storage/db/mysql/mysql.sock”;

$db = new PDO($dsn, ‘root’, ”);

$rs = $db->query(“SELECT * FROM qrtest”);

while($row = $rs->fetch()){

    print_r($row);

}

?>

要补充的地方是说这个 mysql.sock 文件的位置,我的文件是在 /tmp/mysql.sock  但是打开里面是空的,所以当时有一些疑惑  经过实验 证明确实就是这个 /tmp/mysql.sock  我的问题主要是 php 连接不上,mysql 客户端是可以的,然后改了 php.ini  重启 php-fpm 就可以了。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2756字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7801812
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
这个开源软件130k的star数!让电脑轻松管理安卓手机的神器

这个开源软件130k的star数!让电脑轻松管理安卓手机的神器

这个开源软件 130k 的 star 数!让电脑轻松管理安卓手机的神器 大家好,我是星哥。今天给大家安利一款宝...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...