我在 CentOs v5.6 上。当尝试启动 mysql 时,出现以下错误
Starting MySQL. ERROR! Manager of pid-file quit without updating file.
在 /var/log/mysqld.error.log 中我有以下内容
130319 03:39:04 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130319 3:39:04 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.
130319 3:39:04 [Warning] '--log' is deprecated and will be removed in a future release. Please use ''--general_log'/'--general_log_file'' instead.
130319 3:39:04 [Note] Plugin 'FEDERATED' is disabled.
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
130319 3:39:04 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130319 3:39:04 InnoDB: Initializing buffer pool, size = 8.0M
130319 3:39:04 InnoDB: Completed initialization of buffer pool
130319 3:39:04 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.
130319 03:39:04 mysqld_safe mysqld from pid file /var/lib/mysql/ip-10-144-82-28.pid ended
请帮忙谢谢
答案1
查看日志,它看起来像是文件权限问题 -
“该错误意味着 mysqld 没有该目录的访问权限”
检查 var/lib/mysql 目录的所有权:
ls -ld /var/lib/mysql
drwxr-xr-x 8 mysql mysql 4096 Dec 11 12:34 /var/lib/mysql
输出必须显示“mysql mysql”所有权和至少“drwxr-xr-x”(755)权限
如果权限不正确,请授予:
chown mysql.mysql /var/lib/mysql
chmod 755 /var/lib/mysql
然后,
卸载 RPM(仅限全新安装,且没有任何 mysql 数据时。如果不是全新安装,请改为执行 rpm -Uvh)删除 /var/lib/mysql/ 目录的所有内容重新安装 RPM,检查安装 RPM 后是否创建了 /var/lib/mysql/mysql/plugin.frm
然后启动服务 mysql 并查看日志。
答案2
/usr/sbin/mysqld: 找不到文件:'./mysql/plugin.frm' (errno: 13)
130319 3:39:04 [错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。
确保所有“mysql”数据库文件都在 /var/lib/mysql/mysql/... 或者直接运行 mysql_upgrade -p[password]
130319 3:39:04 InnoDB:文件操作中出现操作系统错误编号 13。InnoDB:此错误表示 mysqld 没有目录的访问权限。InnoDB:文件名 ./ibdata1 InnoDB:文件操作调用:'open'。
如前所述,mysql 无法写入 /var/lib/mysql/ibdata1 文件。
确保用户 mysql 正在运行,并且可以在那里写入。
答案3
如果这是 Centos / RHEL 或其他启用了 selinux 的发行版,则这可能是罪魁祸首。
如果是这种情况,请暂时禁用 selinux 并查看是否有效。
echo 0 > /selinux/enforce
如果问题出在 SElinux 上,那么您应该监视 audit.log 并使其正常工作(检查:MySQL 5.6 和 SELinux 正在争论)
您也可以永久禁用它在/etc/sysconfig/selinux中将强制执行改为允许或禁用。