MySQL 守护进程无法启动 - centos 6

Posted

技术标签:

【中文标题】MySQL 守护进程无法启动 - centos 6【英文标题】:MySQL Daemon Failed to Start - centos 6 【发布时间】:2013-12-17 03:03:16 【问题描述】:

编辑:查看勾选的答案 cmets 以解决您的问题。

每当我尝试启动 SQLD 服务时,我都会收到 mysql Daemon Failed to Start。我实际上尝试通过执行以下操作来“启动”服务:

service mysqld start

还有

当我输入:mysql

我明白了:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

我知道那个目录应该有一个 mysql.sock 文件,所以我创建了一个。但是文件只是自动删除了它自己,我继续收到错误 2002。

由于错误,我也无法登录 phpMyAdmin。我可以访问 phpmyadmin 页面,但登录时我得到:#2002 Cannot log in to the MySQL server

编辑:

这是我的 mysql.log 文件:

131201 13:05:07 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131201 13:18:18 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131201 13:18:18 [Note] Plugin 'FEDERATED' is disabled.
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
131201 13:18:18 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
131201 13:18:18 InnoDB: The InnoDB memory heap is disabled
131201 13:18:18 InnoDB: Mutexes and rw_locks use GCC atomic builtins
131201 13:18:18 InnoDB: Compressed tables use zlib 1.2.3
131201 13:18:18 InnoDB: Using Linux native AIO
131201 13:18:18 InnoDB: Initializing buffer pool, size = 128.0M
131201 13:18:18 InnoDB: Completed initialization of buffer pool
131201 13:18:18  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
131201 13:18:18 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

我运行了 mysql_upgrade 并得到了

Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

【问题讨论】:

你确定mysqld正在运行吗?试试service mysqld status 看看。如果没有:service mysqld startMySQL on Centos 我在尝试启动 mysqld 服务时忘记添加我得到 MySQL Daemon 错误。 究竟是什么错误信息?另外,请尝试sudo service mysql start。并且可能摆脱您手动创建的 mysql.sock 文件。 如我所说,它会自动删除它。 【参考方案1】:
 /etc/init.d/mysqld stop

 mysqld_safe --skip-grant-tables & mysql_upgrade

 /etc/init.d/mysqld stop

 /etc/init.d/mysqld start

【讨论】:

一些解释会很好。也请用代码块格式化你的答案。【参考方案2】:
    /etc/init.d/mysql stop chown -R mysql:mysql /var/lib/mysql mysql_install_db /etc/init.d/mysql start

这一切拯救了我的 MySQL 服务器!

【讨论】:

【参考方案3】:

以后还会来这里的朋友,如果以上方法都不起作用,请检查my.cnf文件:

$ sudo gedit /etc/my.cnf

查找以:开头的行

bind-address=[an-IP-address]

检查等号后的IP地址是否正确。如果连IP是什么都不知道,直接用localhost,就只能连接到同一个主机里面的MySQL了。

如果您想远程连接到 MySQL,您实际上应该完全注释掉该行,然后它将侦听您需要的所有 IP 和端口,因为您将通过公共 IPv4 远程连接到它。

然后添加一个用户来访问您的数据库,例如:

mysql> GRANT ALL ON database_name.* TO user@xx.xxx.xx.xx IDENTIFIED BY 'your_password';

将 xx.xx.xx.xx 替换为您的笔记本电脑/台式机的本地 IP 地址,或者如果它是动态的,您可以通过以下方式添加它们: '192.168.0.%' 作为动态 C 类或 '%' 如果您希望能够从任何地方连接(这不太安全)

另外,如果安装了防火墙,应该打开防火墙上的端口;

例如在 Ubuntu 中:

sudo ufw allow 3306/tcp
sudo service ufw restart

现在,通过以下方式检查服务是否可启动:

$ sudo service mysqld start

【讨论】:

【参考方案4】:

由于内存不足,您的数据库已关闭! 您可以编辑下图的 my.cnf base 文件来解决它

performance_schema_max_table_instances=200
table_definition_cache=200
table_open_cache=128

【讨论】:

别忘了重启数据库【参考方案5】:

RE:MySQL 守护程序无法启动 - centos 6 / RHEL 6

    Yum 安装 MySQL

    /etc/init.d/mysqld 启动 MySQL 守护程序无法启动。 启动 mysqld:[失败]

    查看日志:/var/log/mysqld.log

    您可能会收到此错误:[错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。

对我有用的解决方案是运行这个:

    $ mysql_install_db

如果这不能解决您的问题,请告诉我。

【讨论】:

【参考方案6】:

参考这里2.10.2.1 Troubleshooting Problems Starting the MySQL Server。

1.找到数据目录,在my.cnf中配置。

[mysqld]
datadir=/var/lib/mysql

2。检查 err 文件,它记录了有关 mysql 服务器启动失败的错误消息。 err 文件的名称与您的主机名有关。

cd /var/lib/mysql
ll
tail (hostname).err

3.如果你发现一些类似的消息:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 33554432 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
170513 14:25:22 [ERROR] Plugin 'InnoDB' init function returned error.
170513 14:25:22 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
170513 14:25:22 [ERROR] Unknown/unsupported storage engine: InnoDB
170513 14:25:22 [ERROR] Aborting

然后

删除 ib_logfile0 和 ib_logfile1

,那么,

/etc/init.d/mysqld start

【讨论】:

【参考方案7】:

您可能需要从根 (/) 分区中释放一些空间。停止mysql进程:

/etc/init.d/mysql stop

通过命令从mySql中删除一个未使用的数据库:

rm -rf [Database-Directory]

/var/lib/mysql 中执行。现在如果你运行df -h,你可能会被仍然满的空间弄糊涂。要删除受影响的未使用数据库的目录,您需要杀死正在使用当前目录/分区的进程。

停止mysql_safemysqld_safe 然后mysqld

ps -A

然后找到mysql的进程号(例如2234)。然后执行:

kill 2234

现在重新启动mysql:

/etc/init.d/mysql start

【讨论】:

【参考方案8】:

如果您在 AIM Linux Amazon EC2 中使用 yum。 为安全起见,请完整备份目录 /var/lib/mysql

sudo yum reinstall -y mysql55-server

sudo service mysqld start

【讨论】:

【参考方案9】:

我遇到了同样的问题。当我检查 error.log 时,我发现我的磁盘已满。

用途:

df -h 

在命令行上。它会告诉你你还剩下多少空间。我的满了。发现我的 error.log 文件是 4.77GB。我下载了它然后删除了它。 然后我使用 service mysqld start 并且它起作用了。

【讨论】:

【参考方案10】:

可能是权限问题,

请以 root 用户身份尝试以下命令/etc/init.d/mysqld start

【讨论】:

【参考方案11】:

试试

netstat -a -t -n | grep 3306 

查看任何人在监听 3306 端口 然后杀了它

我遇到这个问题 2 天了。尝试论坛上发布的解决方案时,我不小心遇到了我的日志出现此错误的情况

检查您是否还没有另一个 mysqld 进程

【讨论】:

【参考方案12】:

这个错误最可能的原因是你的mysql服务器没有运行。当您输入 mysql 时,您正在执行 mysql 客户端。

试试:

# sudo service mysql start
# mysql

更新(在问题中包含 OP 后;取自下面的 cmets):

谢谢,看到你的日志了。日志说mysql用户没有 适当的访问权限。我假设你的mysql用户是mysql(这可以 在/etc/my.cnf进行验证,执行

chown -R mysql:mysql /var/lib/mysql

然后尝试再次启动mysqld

【讨论】:

截图显示你已经以root登录,所以不需要使用sudo。你可以做service mysqld start。请发布您发出此命令时遇到的任何错误。 似乎有些人对我写这篇文章的方式感到困惑。当我执行“service mysqld start”时,我得到 MySQL Daemon Failed to Start。另一个问题是我在输入“mysql". 你有mysqld.log文件吗,能不能在执行service mysqld start的时候贴一下日志的相关部分。 我已将其添加到主要问题中。 谢谢,看到你的日志了。日志说 mysql 用户没有适当的访问权限。我假设您的mysql用户是mysql(这可以在/etc/my.cnf中验证,执行chown -R mysql:mysql /var/lib/mysql并尝试再次启动mysqld【参考方案13】:

另一个对我有用的技巧。运行命令:

$ mysql_install_db

【讨论】:

【参考方案14】:

尝试重新启动 apache sudo service httpd restart。为我工作。

【讨论】:

我不知道为什么,但令我惊恐的是,这确实有效!谢谢雨滴!! 它也对我有用...我对这个问题的答案很感兴趣。 我不知道它是如何工作的,但是当 MySQL、PHP 等出现问题时,我有时会重新启动 Web 服务作为常规调试的一部分。 @stcheng 为时已晚,但自上个月以来我也是古玩,但今天我弄清楚了为什么它在 httpd 重新启动后工作。实际上原因是至少在我的情况下是内存,当出现内存问题时 mysql 会崩溃,但是当我重新启动 httpd 时可能是由于释放了一些内存,mysql 获得了足够的内存来重新启动 这个修复对我来说没有任何意义,但在尝试了其他一些东西后尝试了它并且它有效。我不得不在我的机器上停止 httpd,然后尝试启动 mysqld……它工作了!!!……完全不知道为什么。【参考方案15】:

我刚刚遇到了这个错误。我无法远程连接到我的 mysql 服务器。我尝试使用服务mysqld restart(我使用root)重新启动mysql服务器。它停止了,但没有重新开始。原来我的记忆是满的。清除了几 GB,它工作正常。

【讨论】:

【参考方案16】:

运行这个:

chown -R mysql:mysql /var/lib/mysql

再试一次!

【讨论】:

以上是关于MySQL 守护进程无法启动 - centos 6的主要内容,如果未能解决你的问题,请参考以下文章

尝试启动 MySQL 守护程序时发生超时错误。 CentOS 5

启动Gradle守护程序,1个忙碌和6个停止的守护进程无法重用,请使用--status获取详细信息

centos 7.x设置守护进程的文件数量限制

gradle 命令失败,因为它无法启动守护进程

CentOS使用Ubuntu的start-stop-daemon来启动守护进程

Docker 抛出 FATA [0000] 来自守护进程的错误响应