致命错误:无法打开和locking权限表:表'mysql.host'不存在
我在一台服务器上重新安装了RHEL 5.我能够安装Apache和PHP就好了,但是我在安装MySQL时遇到了严重的麻烦。 我尝试了以下内容:
yum install mysql-server mysql
并没有得到任何的错误或冲突。 然后我试着用以下命令启动mysql:
chkconfig --levels 235 mysqld on service mysqld start
并Timeout error occurred trying to start MySQL Daemon.
我检查了我的日志,看到这个错误:
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
我不确定该从哪里出发。
作为参考,我正在使用RHEL 5并安装了最新版本的PHP 5和Apache。
-
使用
yum remove mysql*
卸载mysqlyum remove mysql*
-
recursion删除
/usr/bin/mysql
和/var/lib/mysql
-
删除文件
/etc/my.cnf.rmp
-
使用
ps -e
来检查进程,确保mysql不在运行。 -
重新引导服务器
-
运行
yum install mysql-server
。 这也似乎安装MySQL客户端作为依赖。 -
给予mysql拥有权和组织权:
chown -R mysql /var/lib/mysql
chgrp -R mysql /var/lib/mysql
-
使用
service mysqld start
来启动MySQL守护进程。
根据@Bad程序员的回答,在chown
和chgrp'ing /var/lib/mysql
之后 ,可能还需要执行以下命令:
sudo mysql_install_db –-user=mysql –ldata=/var/lib/mysql
然后重新启动你的mysqld
。
我在arch linux上也有这个问题。 问题是pacman在不同于MySQL期望的位置安装了该软件包。 我能够解决这个问题:
sudo mysql_install_db --user=mysql --basedir=/usr/ --ldata=/var/lib/mysql/
希望这可以帮助别人!
mysql_install_db –-user=mysql –ldata=/var/lib/mysql
在Centos 7中为我工作
我的问题的根源似乎是selinux,它在操作系统安装时自动打开(执行)。
我想我的MySQL在/数据。
validationmy.cnf之后:
datadir=/data/mysql
(并将套接字放在/ var / lib / mysql)我执行命令closuresselinux for mysqld(另一种方法是将其完全closures):
setsebool -P mysqld_disable_trans=1
我运行了以下命令:
> chown -R mysql . > chgrp -R mysql . > mysql_install_db --user=mysql
我启动了mysql守护进程,之后一切正常。
在windows上启动之前初始化mysql。
mysqld --initialize
当下载mysql zip版本时,如果直接运行mysqld,你会得到这个错误:2016-02-18T07:23:48.318481Z 0 [错误]致命错误:无法打开和locking权限表:表'mysql.user'不存在2016-02-18T07:23:48.319482Z 0 [错误]正在中止
你必须首先运行命令:mysqld –initialize
确保你的数据文件夹在这个命令之前是空的。
如果你移动你的datadir,你不仅需要赋予新的datadir权限,而且还需要确保所有的父目录都有权限。
我将我的datadir移动到一个硬盘上,安装在Ubuntu上:
/media/*user*/Data/
我的数据库是数据库 。
我必须将权限设置为771到每个媒体, 用户和数据目录:
sudo chmod 771 *DIR*
如果这不起作用,另一种可以让mysql工作的方式是将/etc/mysql/my.cnf中的用户更改为root用户; 尽pipe从安全的angular度来看,这是毫无疑问的。
我刚刚在OSX上遇到了与mysql 5.7相同的问题:
rm -rf {datadir} mysqld --initialize --datadir {datadir} mysqld --datadir {datadir}
对于我自己,我必须这样做:
yum remove mysql* rm -rf /var/lib/mysql/ cp /etc/my.cnf ~/my.cnf.bkup yum install -y mysql-server mysql-client mysql_install_db chown -R mysql:mysql /var/lib/mysql chown -R mysql:mysql /var/log/mysql service mysql start
然后,我能够回到我的数据库,并configuration他们之后,我第一次去解决他们。
只要这个命令就足以在centos上做魔术了
mysql_install_db的
在我的情况下,MySQL数据文件夹的path有一个特殊的字符“ç”,它使我得到…
致命错误:无法打开和locking权限表:表'mysql.host'不存在。
我已经删除了所有的特殊字符,一切正常。
在CentOS EL 6上,也许在早期版本中,有一种方法可以解决这个问题。
安装CentOS EL6最小的安装。 例如,我用kickstart来安装以下内容:
%packages @core acpid bison cmake dhcp-common flex gcc gcc-c++ git libaio-devel make man ncurses-devel perl ntp ntpdate pciutils tar tcpdump wget %end
你会发现上面列表的一个依赖是mysql-libs
。 我发现我的系统在/etc
有一个默认的my.cnf
,它包含:
[mysqld] dataddir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
从Generic Linux (Architecture Independent), Compressed TAR Archive
于Generic Linux (Architecture Independent), Compressed TAR Archive
构build时Generic Linux (Architecture Independent), Compressed TAR Archive
默认数据目录是/usr/local/mysql/data
,它与已经存在的/etc/my.cnf
冲突,其中定义了datadir=/var/lib/mysql
。 另外,在同一个文件中定义的pid-file
文件没有mysql用户/组在/var/run/mysqld
写入的权限。
一个快速的补救措施是mv /etc/my.cnf /etc/my.cnf.old
这应该让你的通用源程序工作。
当然,使用源代码RPM的体验是不同的。
我试图启动服务器,并按照“检查”的解决scheme相同的问题。 但是还是有问题的。 问题是我的/etc/my.cnf文件没有指向我指定的datadir,当我执行mysql_install_db时定义了–datadir。 一旦我更新了这个,服务器启动正确。
如果你有一台曾经很开心运行MySQL的服务器,但是现在出现这个错误,那么卸载和重新安装MySQL就太过分了。
在我的情况下,服务器死了,并采取了几个磁盘块。 这影响了一些文件,包括/var/lib/mysql/mysql/host.frm和/var/lib/mysql/mysql/proc.frm
幸运的是,我可以从另一台服务器上复制这些文件,这让我越过了那个表格错误。
我在Docker for Mac上默认的overlayfs(overlay2)上遇到类似的错误。 在使用mysql创build映像后,在映像上启动mysql时发生错误。
2017-11-15T06:44:22.141481Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table storage engine for 'user' doesn't have this option
切换到“aufs”解决了这个问题。 (在Docker for Mac上,可以通过select“首选项…”菜单,select“守护程序”选项卡并select“高级”选项卡来编辑“daemon.json”。
/etc/docker/daemon.json:
{ "storage-driver" : "aufs", "debug" : true, "experimental" : true }
参考:
我在Ubuntu 14.04.2 LTS上的情况与my.cnf中的情况类似,但对我来说,原因是之前安装剩下的〜/ .my.cnf。 删除该文件并清除/重新安装MySQL服务器后,它工作正常。