mysql.sock文件丢失Can't connect to local MySQL server through socket '/tmp/mysql.sock'

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

今天碰到奇怪的问题:不过又增加经验了:

首先:论坛突然报以下错误(discuz的):

wKioL1LVEazAGEvjAAAtRr0NUes896.jpg

我马上想到缓存问题,我到后台更新了下缓存。然后刷新首页变成了:

wKiom1LVElbSDB9XAAA6C5vkgUs217.jpg


百度了下,都说是要cdb_style表少了一个主题样式,补上就行了。然后马上到数据库看,打算看下cdb_style表并修复一下数据库,可是当我任意打开一张表后提示:

Got error 28 from storage engine


wKiom1LVEsbCN86jAABaBDMAkDs404.jpg

百度了下:

产生该错误的原因是:
临时空间不够,无法执行此SQL语句。

根据返回值,可以判断应该是某挂在分区空间已满造成。

[root@websites ~]# df -lh
Filesystem 容量 已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00 45G 43G 100% /
/dev/xvda1 99M 12M 83M 13% /boot
/usr/tmpDSK 512M   0 512M   0% /dev/shm

解决办法:
清空/tmp目录,或者修改my.cnf中的tmpdir参数,指向具有足够空间目录。


清空tmp目录后(第一个问题算解决了),刷新首页,提示变了:

Can't connect to local MySQL server through socket


怎么会连不上数据库了呢。我重启数据库后还是这样。


百度后按一下方法,

问题分析:

出现这个错误一般情况下是因为下面两个原因:

1、MySQL 服务器没有开启。

2、MySQL 服务器开启了,但不能找到 socket 文件。

解决方法:

1、虚拟主机用户,请联系空间商确认数据库是否正常启动,并跟空间商确认 MySQL 的 socket 文件启动地址,可以尝试在 论坛根目录下的配置文件 config.inc.php 中的 $dbhost 的值改为 $dbname = 'localhost:/tmp/mysql.socket‘,(这里假设 MySQL 的启动地址是 /tmp/mysql.socket,具体的启动地址依据空间商提供的启动地址而定)。

2、独立主机用户,请检查一下 MySQL 服务是否已经开启,没有开启,请启动 MySQL 服务;如果已经开启并且是 Linux 系统,请检查一下 MySQL 的 socket 路径,然后打开 config.inc.php 找到

$dbhost = 'localhost'; 在 localhost 后面加冒号‘:’和 MySQL 的 socket  路径。

比如 MySQL 服务器为 localhost

MySQL 的 socket  路径为 /tmp/MySQL.sock

那么就改成如下:

$dbhost = 'localhost:/tmp/MySQL.sock';




今天弄个环境,遇到这个问题:Can't connect to local MySQL server through socket '/tmp/mysql.sock'


1.确认用户名跟密码都设置正常,授权正常,仍然

wKiom1LVFXSAbNhAAACOWpVgLa8612.jpg

2.查看‘/tmp/mysql.sock’文件,发现,没有这个文件

wKioL1LVFXCRBxQhAABErXhIzYA701.jpg

3.查看mysql进程,如下:

wKiom1LVFYXgHvdsAAGVwPoiWXM163.jpg

4.原来之前使用的是/xxxxx/mysql/3306/data/mysql.sock这个sock 所以无法连接了,忘记了


5.处理方法如下:

ln -s /xxxxx/mysql/3306/data/mysql.sock /tmp/mysql.sock


再通过mysql命令就可以正常连接了!




mysql.sock文件丢失了


在mysql的启动过程中有时会遇到下述错误

Can't connect to local MySQL server through socket '/tmp/mysql.sock'


请问mysql.sock 这个文件到底起什么作用?
如何避免发生如此错误?

答案一、
这个mysql.sock应该是mysql的主机和客户机在同一host(物理服务器)上的时候,使用unix domain socket做为通讯协议的载体,它比tcp快。通常遇到这个问题的原因就是你的mysql server没运行起来。
看看你的 /tmp/mysql.sock 这个文件存在否?正常情况下它应该在那里的,或者用 netstat 看看结果中是否有 
Active UNIX domain sockets

答案二、
这个文件是用于socket连接的文件。 
也就是只有你的守护进程启动起来这个文件才存在
但是你的mysql程序(这个程序是客户端,服务器端是mysqld)可以选择是否使用mysql.sock文件来连接(因为这个方法只适合在Unix主机上面连接本地的mysqld),对于非本地的任何类型的主机。这些在MySQL的手册(包括晏子翻译的中文版本,覆盖3.23/4.0版本)都有说明。只要看看就可以明白。 

前面朋友说不能连接,最大可能就是mysqld的这个守护进程没有启动。

答案三、
Mysql有两种连接方式:
(1)TCP/IP
(2)socket
对mysql.sock来说,其作用是 mysql客户端程序 mysql与 mysql服务器端程序 mysqlserver处于同一台机器,发起本地连接时可用
例如你无须定义连接host的具体IP得,只要为空或localhost就可以。
在此种情况下,即使你改变mysql的外部port也是一样可能正常连接。
因为你在my.ini中或my.cnf中改变端口后, mysql.sock是随每一次 mysql server启动生成的。已经根据你在更改完my.cnf后重启mysql时重新生成了一次,信息已跟着变更。
那么对于外部连接,必须是要变更port才能连接的。


网上还有更多关于mysql.sock文件丢失导致不能连接上mysql的介绍:

http://www.cnblogs.com/super-lucky/p/superlucky.html




      本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/1351632,如需转载请自行联系原作者







相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
2月前
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
208 9
|
5月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
网络协议 测试技术 网络安全
Python编程-Socket网络编程
Python编程-Socket网络编程
43 0
|
7月前
|
网络协议 开发者 Python
深度探索Python Socket编程:从理论到实践,进阶篇带你领略网络编程的魅力!
【7月更文挑战第25天】在网络编程中, Python Socket编程因灵活性强而广受青睐。本文采用问答形式深入探讨其进阶技巧。**问题一**: Socket编程基于TCP/IP,通过创建Socket对象实现通信,支持客户端和服务器间的数据交换。**问题二**: 提升并发处理能力的方法包括多线程(适用于I/O密集型任务)、多进程(绕过GIL限制)和异步IO(asyncio)。**问题三**: 提供了一个使用asyncio库实现的异步Socket服务器示例,展示如何接收及响应客户端消息。通过这些内容,希望能激发读者对网络编程的兴趣并引导进一步探索。
81 4
|
7月前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
【7月更文挑战第25天】在网络应用蓬勃发展的数字时代,Python凭借其简洁的语法和强大的库支持成为开发高效应用的首选。本文通过实时聊天室案例,介绍了Python Socket编程的基础与进阶技巧,包括服务器与客户端的建立、数据交换等基础篇内容,以及使用多线程和异步IO提升性能的进阶篇。基础示例展示了服务器端监听连接请求、接收转发消息,客户端连接服务器并收发消息的过程。进阶部分讨论了如何利用Python的`threading`模块和`asyncio`库来处理多客户端连接,提高应用的并发处理能力和响应速度。掌握这些技能,能使开发者在网络编程领域更加游刃有余,构建出高性能的应用程序。
45 3
|
7月前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
【7月更文挑战第26天】在网络的数字宇宙中,Python Socket编程是开启网络世界大门的钥匙。本指南将引领你从基础到实战,成为网络世界的建筑师。
79 2
|
7月前
|
网络协议 程序员 视频直播
|
7月前
|
消息中间件 网络协议 网络安全
Python Socket编程:打造你的专属网络通道,基础篇与进阶篇一网打尽!
【7月更文挑战第26天】在网络编程领域,Python以简洁语法和强大库支持成为构建应用的首选。Socket编程为核心,实现计算机间的数据交换。
83 1
|
7月前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解