如何避免mysql启动时错误及sock文件作用分析

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

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

请问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 的处理方法

出现以下的信息:

Got an error: Connection error: Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock'

mysql.sock 突然消失算是常见的问题。
如果是第一次安装MySQL后运行时出现,那只要找出 mysql.sock 在哪里就可以了。

以上的信息表明

mysql.sock应该是在 /var/lib/mysql/ 下 。

如果你找了没找到就

#locate mysql.sock

就会出来了,接着你就可以

#mysqladmin -S /路径/mysql.sock -u root

如果是原来很正常的,突然有一天系统告诉你找不到mysql.sock这鬼文件了,怎么办?

那只好用/etc/rc.d/init.d/mysql restart 或者service mysql restart 重启服务

如果还不行,就先

#ps -aux|grep mysql 找mysql的进程.

#kill mysql进程号 确定全部kill光

再/etc/rc.d/init.d/mysql restart 或者service mysql restart 重启服务

以上就是mysql启动时错误sock文件作用分析的详细内容,更多关于mysql启动错误sock作用的资料请关注我们其它相关文章!

(0)

相关推荐

  • 详解MySQL中的pid与socket

    socket文件:当用Unix域套接字方式进行连接时需要的文件. pid文件:MySQL实例的进程ID文件. 1.pid-file介绍 MySQL 中的 pid 文件记录的是当前 mysqld 进程的 pid ,pid 亦即 Process ID .可以通过 pid-file 参数来配置 pid 文件路径及文件名,如果未指定此变量,则 pid 文件默认名为 host_name.pid ,存放的路径默认放在 MySQL 的数据目录. 建议指定 pid 文件名及路径,pid 目录权限要对 mysql

  • 解决xampp自启动和mysql.sock问题

    装了ubuntu好长一段时间了,都没去用,国庆的时候折腾了下,配置了一些基本的开发环境,一上手就感觉喜欢上了ubuntu,说不上为什么.为了搞本地的测试php测试环境而装了xampp,安装超简单,但是我发现它没有自启动.解决办法也很简单,通过下面的命令打开启动的资源文件: 复制代码 代码如下: x@zst:~$ cd /etc/init.d x@zst:/etc/init.d$ sudo gedit rc.local 在启动文件里加入一行代码: 复制代码 代码如下: /opt/lampp/lam

  • linux下安装mysql及mysql.sock问题

    最近在linux上装Aphace,mysql,php时,遇到很多问题,在装apache和php遇到的问题要简单点,在百度,google上一搜就解决了,唯独在装mysql的时候遇到了一个问题困扰了我很久. 我用的是ubuntu7.0.我装mysql时,运行mysqladmin version时,始终出错: can't connect to local MySQL server through socket 'var/run/mysqld/mysqld.sock' 这个把我弄得几近崩溃,我在网上查找

  • mysql socket文件作用详解

    网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket,一般在配置部署mysql环境时都会在mysql的my.cnf文件中[mysqld]栈下添加上socket文件的路径,而这样做的好处是如果启用了多实例mysql时,可以通过socket文件来快速的登录mysql对应不同端口下的实例,如在一台有部署2个实例的mysql服务一个是用3306,一个是用3307端口,那么就可以通过2个不同的socket文件快速的登录 mysql -uroot -p --socket=

  • 深入解析mysql.sock不见的问题

    之前在网上看过好多关于mysql.sock不见的问题,并没有关注这个东西存在的意义,直到自己的mysql也出现了相同的问题.让人纠结了一把-- 复制代码 代码如下: zhouqian@zhou:~$ mysqlERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 网上好多的解决办法,可是每个人的实际情况不同,我也是把上面所有人的方法实验了一个

  • 如何避免mysql启动时错误及sock文件作用分析

    在mysql的启动过程中有时会遇到下述错误 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 请问mysql.sock 这个文件到底起什么作用? 如何避免发生如此错误? 答案一. 这个mysql.sock应该是mysql的主机和客户机在同一host(物理服务器)上的时候,使用unix domain socket做为通讯协议的载体,它比tcp快.通常遇到这个问题的原因就是你的mysql server没运

  • mysql 启动1067错误及修改字符集重启之后复原无效问题

    下载了官网的解压版mysql-5.6.37-winx64.zip,修改了配置文件,安装服务,直接使用; 出现了中文乱码, 解决办法: 在mysql-5.6.37-winx64目录下,新创建并配置一个my.ini文件(内容可以从网上找,也可以参考my-default.ini手动配置) 注意: [client] 节点位置千万别放错,比如: 错误方式: [mysqld] character-set-server=utf8 # Remove leading # and set to the amount

  • 如何让docker中的mysql启动时自动执行sql语句

    在用docker创建mysql容器的时,有时候我们期望容器启动后数据库和表已经自动建好,初始化数据也已自动录入,也就是说容器启动后我们就能直接连上容器中的数据库,使用其中的数据了. 其实mysql的官方镜像是支持这个能力的,在容器启动的时候自动执行指定的sql脚本或者shell脚本,我们一起来看看mysql官方镜像的Dockerfile,如下图: 已经设定了ENTRYPOINT,里面会调用/entrypoint.sh这个脚本,我们把mysql:8这个镜像pull到本地,再用docker run启

  • docker mysql启动时执行初始化sql

    1.拉取Mysql镜像 docker pull mysql:5.7 2.检查mysql镜像 docker inspect mysql:5.7 "Entrypoint": [ "docker-entrypoint.sh" ], 3.本地创建mysql外挂的目录 ##挂载到容器内/docker-entrypoint-initdb.d:MySQL启动时将执行 01_create_database.sql /root/mysql-5.7/init-data 01_creat

  • MySQL启动1053错误解决方法

    操作系统:windows7 mysql版本:5.5.22 www.jb51.net 在使用命令mysqld --install servicename --defaults-file='file_name'创建mysql服务时,系统 已提示创建服务成功,但是net start命令提示启动失败,并在services.msc中提示1053错误 解决办法: 在网上有人说是服务的"登录"选项卡里要设置成administrator: 也有人说是需要先把服务删除,在重新创建(可以先考虑这两方面):

  • 关于Spring启动时Context加载源码分析

    前言 本文主要给大家介绍了关于Spring启动时Context加载的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 测试源码下载test-annotation.zip 有如下的代码 @Component public class HelloWorldService { @Value("${name:World}") private String name; public String getHelloMessage() { return "Hell

  • mysql启动时出现ERROR 2003 (HY000)问题的解决方法

    一.问题描述 在启动MYSQL时出现问题:"ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)",情况如图: 二.问题分析 从错误的提示中可以看出MySQL服务没有启动,因此只需要启动MySQL服务就可以了. 三.问题解决 直接采用net start MySQL 就可以启动MySQL服务,但是输入命令后仍然出现错误: 可以看到错误提示:"服务名无效",说明不存在MySQL服

  • MySQL启动时InnoDB引擎被禁用了的解决方法

    发现问题 今天在工作中,从本地数据库复制表数据到虚拟机 CentOS 6.6 上的数据库时,得到提示: Unknown table engine 'InnoDB' 于是在服务器 MySQL 中查看了引擎: mysql> show engines\G 得到: *************************** 1. row *************************** Engine: MyISAM Support: DEFAULT Comment: MyISAM storage en

  • Mysql/MariaDB启动时处于进度条状态导致启动失败的原因及解决办法

    今天打开网站突然发现网站无法打开,后来通过SSH登陆服务器发现MARIADB数据库没有启动成功,再次启动还是无法成功启动,一直处于启动进度条,进度条结束后提示ERROR.查看日志出现以下错误: InnoDB: Unable to lock ./ibdata1, error: 11 后经调试发现是因为MariaDB数据库所在分区已经满了,造成无法启动. 只有将MariaDB数据库存放数据目录移动到另外一个磁盘份额比较大的分区或者将当前分配删除一些不必要的文件. 移动办法: 1.停掉mysql服务器

  • MySQL启动错误解决方法

    一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况.拿到一台服务器,安装完mysql后进行启动,启动错误如下: 有同学会说,哥们儿你是不是buffer pool设置太大了,设置了96G内存.这明显提示无法分配内存嘛.如果真是这样也就不在这里进行分享了,哈哈. 我的服务器内存是128G.如下图: 服务器内存使用情况: 那么问题来了,既然还剩如此多的内存,为什么提示无法分配内存??.各位童鞋怎么看? 1. 首先想到会不会是有几条内存坏了?于是运维的同学进行了检查,给我

随机推荐