centos上无法启动mysql,因为找不到mysql.sock

Posted

技术标签:

【中文标题】centos上无法启动mysql,因为找不到mysql.sock【英文标题】:can't start mysqld on centos because I cant find mysql.sock 【发布时间】:2013-12-27 20:18:20 【问题描述】:

您好,当我尝试启动我的 mysqld 时出现此错误:

[root@localhost /]# service mysqld restart
Stopping mysqld:                                           [  OK  ]
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]

主要原因是my.cnf文件找不到我的mysql.sock文件。

[root@localhost /]# mysqladmin -u root -p status

mysqladmin: connect to server at 'localhost' failed

error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!

当我尝试使用 :

进行搜索时
sudo find / -type s | grep mysqld.sock

我会得到

find: ‘/proc/3253/task/3253/fd/5’: Bestand of map bestaat niet 
find: ‘/proc/3253/task/3253/fdinfo/5’: Bestand of map bestaat niet
find: ‘/proc/3253/fd/5’: Bestand of map bestaat niet
find: ‘/proc/3253/fdinfo/5’: Bestand of map bestaat niet

"Bestand of map bestaat niet" == "File or directory don't exists"

我是新手,谁能帮帮我?

【问题讨论】:

目录/var/lib/mysql是否存在? 尝试 service mysqld status 看看它是否显示除了停止之外的任何输出。 mysqladmin 将不起作用,如果 mysql 已关闭,将显示相同的错误。该错误在许多原因中很常见,并且不是唯一的。让我们知道service mysqld status的O/P 嗨,您是否尝试过更改 /var/lib/mysql 文件夹的所有者和权限? mysqladmin 日志不能证明 mysqld 无法启动的原因。你找错地方了。 【参考方案1】:

多么痛苦!我偶然发现了同样的问题(在 RedHat 上),这对我有帮助:

service mysqld stop
rm -rf /var/lib/mysql/*
service mysqld start
mysql_secure_installation

希望对您有所帮助。祝你好运!

【讨论】:

如果您需要,请不要忘记备份您的数据! cp -fr /var/lib/mysql /var/lib/mysql.backup “警告:Barmaley 发布的答案非常危险。它会删除您的所有用户等。除非一切都失败了,否则不要使用他的方法”来自 GRoston【参考方案2】:

“主要原因是my.cnf文件找不到我的mysql.sock文件。”

不。 “主要原因”是mysqld has not started,所以没有mysql.sock,任何客户端都无法建立连接。

目前“为什么 mysqld 失败”是一个广泛的问题。 MySQL 错误日志的原因是“为什么 MySQL 失败”。如果您知道 mysql 错误日志在哪里,只需打开它,然后将错误消息发布到您的问题中。

但可能我猜你不知道mysql错误日志在哪里......

确定mysql错误日志的位置

所以,我们需要确定它在哪里。我们可以猜到某个地方……但确切的方法是使用strace

$ strace -f > strace.log 2>&1 service mysqld start

现在 strace.log 拥有所有与 MySQL Deamon 相关的系统调用。使用任何编辑器打开 strace.log 并搜索“err”。在我的情况下

[pid 26976] open("/XXX/hostname.err", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3

当 open() 失败时

可能发生open()失败,常见错误是

'2' for 'no such file or directory'表示'没有/XXX目录。 “权限被拒绝”的“3”表示您(或 my.cnf 中的用户)没有对“XXX”的写入权限

这样你就可以找到 mysqld 在 '/XXX/hostname.err' 中启动失败的原因。如果您发布错误消息,我们将不胜感激。

附言

我有测试 strace 与

$ strace -f > strace.log 2>&1 mysql.server start

不确定是否与service mysqld 合作,但没有理由不工作

更新

“我没有得到任何回报:$ strace -f > strace.log 2>&1 service mysqld start”

实际上service mysqld start 调用/etc/rc.d/init.d/mysqld start(假设CentOS 或Fedora)。所以,你可以试试。

$ strace -f > strace.log 2>&1 /etc/rc.d/init.d/mysqld start

如果您引用的my.cnf 是mysqld 的正确文件,请打开它并搜索[mysqld] 部分。如下所示

[mysqld]
user    = username
port    = 1111
basedir = /path/
datadir = /path/data

MySQL 错误日志在/path/data

【讨论】:

我没有得到任何回报:$ strace -f > strace.log 2>&1 service mysqld start【参考方案3】:

我不是 mysql 专家,但问题是:

mysql 是在侦听套接字、tcp 端口还是两者兼而有之?

检查 my.cnf 配置文件,它通常在 /etc 或 /etc/mysql 中,你会看到这个。此外,如果它已经作为套接字运行,您将看到套接字的路径。

希望对你有帮助。

问候

【讨论】:

【参考方案4】:

从你的帖子来看,mysqld 似乎无法启动MySQL Daemon failed to start. Starting mysqld: [FAILED]

检查mysqld是否正在运行service mysqld status

配置文件 my.cnf 正在寻找 mysql.sock,而您正在寻找 mysqld.sock。两个不同的名字。

【讨论】:

mysqld 没有运行,因为我无法启动它 这是你第一次尝试启动这个mysql实例吗?如果这是第一次,可能根本没有配置任何数据库。尝试运行 mysqladmin 并创建数据库。【参考方案5】:

感谢 Barmaley,提供了很棒的答案。我检查了我的 mysqld.log 文件。

它显示了我的 mysql 服务没有启动的所有原因。在我的例子中,用户 mysql 对 "/var/run/mysqld" 没有写权限。我从 root 用户授予了 mysql 用户的权限,它对我有用。

再次感谢!巴马利

【讨论】:

【参考方案6】:

技术设置:

Vagrant (Centos 6.6, MySQL 6.6) on top of MacOS Captain

每次我尝试在 Centos 上运行 mysql 时,我都会看到这个问题,我不确定这个问题是否仅特定于 OS 和 MySQL 版本。

如果您打开日志文件并检查,您会看到类似这样的内容

/usr/sbin/mysqld:找不到文件'/var/log/mysql-bin.index'(错误代码: 13 - 权限被拒绝)

Permission Denied 是因为默认情况下我们没有写入 /var/log 文件的权限,所以我们应该更改用户的权限。 MySQL 正在尝试向位于/var/log/mysqlbin-logrelay-logs 写入内容。

在更改权限之前,我们需要意识到 /var/log 中没有 mysql 目录,所以我们需要先创建该目录,然后再更改权限。 所以,我这样做了:

mkdir mysql
chown mysql: mysql

mysqld 现在应该开始工作了!

【讨论】:

以上是关于centos上无法启动mysql,因为找不到mysql.sock的主要内容,如果未能解决你的问题,请参考以下文章

centos通过yum安装mariadb(mysql)无法启动服务或者找不到mysql.sock

CentOS通过yum安装MariaDB(MySQL)无法启动服务或者找不到mysql.sock

在 Mac OSX 10.6.8 上找不到 mysqladmin

“应用程序无法启动,因为找不到 cxcore210.dll”。为啥会发生这种情况?

阿里云Centos下安装mysql找不到mysql-sever安装包的解决方案

找不到 MySQL - 尝试从命令行访问 MySQL 时出现“找不到命令”错误