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

你好,当我尝试启动我的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! 

当我尝试用以下方式search它时:

 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" 

我是新来的,所以任何人都可以帮我吗?

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

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

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

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

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

目前“为什么mysqld failds”是广泛的问题。 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'表示'没有这样的文件或目录'表示没有/ XXX目录。
  • '3'表示'权限被拒绝'表示您(或my.cnf中的用户)对'XXX'没有写入权限

所以你可以找到为什么mysqld无法在'/XXX/hostname.err'中启动。 我们非常感谢您发布错误信息。

PS

我有测试strace

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

不知道与service mysqld工作,但没有理由不工作

UPDATE

“我没有得到任何回报:$ 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

我不是在MySQL的专家,但问题是:

是mysql侦听套接字,在TCP端口或两者?

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

希望能帮助到你。

问候

从你的文章看来,mysqld启动失败, MySQL Daemon failed to start. Starting mysqld: [FAILED] MySQL Daemon failed to start. Starting mysqld: [FAILED]

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

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

谢谢巴马利,真棒的答案。 我检查了我的mysqld.log文件。

它显示了我的MySQL服务不启动的所有原因。 在我的情况下,用户mysql对“/ var / run / mysqld”没有写权限。 我从root用户授予mysql用户权限,它为我工作。

再次感谢! Barmaley

技术设置:

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

每当我尝试在Centos上运行mysql时,我都会看到这个问题,我不确定如果这个问题只针对OS和MySQL版本。

如果你打开日志文件,并检查你会看到这样的事情

/ usr / sbin / mysqld:找不到文件'/var/log/mysql-bin.index(Errcode:13 – Permission denied)

权限被拒绝是因为默认情况下,我们没有写入/ var / log文件的权限,所以我们应该更改用户的权限。 MySQL试图写入/var/log/mysql bin-logrelay-logs

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

 mkdir mysql chown mysql: mysql 

mysqld应该现在开始工作!