您好,当我尝试启动我的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"
我是新手,所以有人可以帮我吗?
答案 0 :(得分:19)
多么痛苦!我偶然发现了同样的问题(在RedHat上),这对我有所帮助:
service mysqld stop
rm -rf /var/lib/mysql/*
service mysqld start
mysql_secure_installation
希望有所帮助。祝你好运!
答案 1 :(得分:3)
“主要原因是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()
失败,常见错误
所以你可以找到mysqld无法在'/XXX/hostname.err'中启动的原因。如果您发布错误消息,我们非常感谢。
P.S。
我有
的测试版$ 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
答案 2 :(得分:1)
我不是mysql的专家,但问题是:
mysql是在侦听套接字,tcp端口还是两者上监听?
检查通常在/ etc或/ etc / mysql中的my.cnf配置文件,你会看到这个。此外,如果它已作为套接字运行,您将看到套接字的路径。
希望它有所帮助。
此致
答案 3 :(得分:1)
从你的帖子来看,似乎mysqld无法启动MySQL Daemon failed to start.
Starting mysqld: [FAILED]
。
检查mysqld是否正在运行service mysqld status
。
配置文件my.cnf正在寻找mysql.sock,你正在寻找mysqld.sock。两个不同的名字。
答案 4 :(得分:1)
感谢Barmaley,感谢您的回答。我检查了我的mysqld.log文件。
它显示了我的mysql服务无法启动的所有原因。在我的情况下,用户mysql没有“/ var / run / mysqld”的写权限。我从root用户那里获得了mysql用户的许可,它对我有用。
再次感谢! Barmaley
答案 5 :(得分:0)
技术设置:
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 - 许可被拒绝)
权限被拒绝是因为默认情况下我们没有权限写入/ var / log文件,因此我们应该更改用户的权限。 MySQL正在尝试将内容写入位于bin-log
的{{1}}或relay-logs
。
在我们更改权限之前,我们需要意识到/ var / log中没有mysql目录,所以我们需要首先创建它然后更改权限。 所以,我这样做了:
/var/log/mysql
mysqld现在应该开始工作了!