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 start
MySQL 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_safe
或mysqld_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获取详细信息