我在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。
答案 0 :(得分:62)
使用yum remove mysql*
递归删除/usr/bin/mysql
和/var/lib/mysql
删除文件/etc/my.cnf.rmp
使用ps -e
检查进程以确保mysql仍在运行。
使用reboot
运行yum install mysql-server
。这似乎也将mysql客户端安装为依赖。
使用以下命令提供mysql所有权和组priveleges:
chown -R mysql /var/lib/mysql
chgrp -R mysql /var/lib/mysql
使用service mysqld start
启动MySQL守护进程。
答案 1 :(得分:58)
在@Bad Programmer的答案后chown
和chgrp
'/var/lib/mysql
之后,您可能还必须执行以下命令:
sudo mysql_install_db --user=mysql --ldata=/var/lib/mysql
然后重新启动mysqld
。
答案 2 :(得分:38)
我也在arch linux上遇到过这个问题。问题是pacman将软件包安装在与MySQL预期不同的位置。我能够解决这个问题:
sudo mysql_install_db --user=mysql --basedir=/usr/ --ldata=/var/lib/mysql/
希望这有助于某人!
答案 3 :(得分:11)
mysql_install_db –-user=mysql –ldata=/var/lib/mysql
在Centos 7中为我工作
答案 4 :(得分:7)
当下载mysql zip版本时,如果直接运行mysqld,你会收到此错误: 2016-02-18T07:23:48.318481Z 0 [错误]致命错误:无法打开和锁定权限表:表' mysql.user'不存在 2016-02-18T07:23:48.319482Z 0 [错误]中止
您必须先在命令下运行: mysqld --initialize
在此命令之前确保您的数据文件夹为空。
答案 5 :(得分:3)
如果移动datadir,则不仅需要赋予新的datadir权限,还需要确保所有父目录都具有权限。
我将我的datadir移动到硬盘驱动器上,安装在Ubuntu中:
/media/*user*/Data/
我的datadir是数据库。
我必须为每个媒体 user 和数据目录设置771的权限:
sudo chmod 771 *DIR*
如果这不起作用,另一种让mysql工作的方法是将/etc/mysql/my.cnf中的用户改为root;虽然毫无疑问从安全角度来看这样做会有一些问题。
答案 6 :(得分:3)
我在OSX上遇到了与mysql 5.7相同的问题:
rm -rf {datadir}
mysqld --initialize --datadir {datadir}
mysqld --datadir {datadir}
答案 7 :(得分:2)
对于我自己,我必须这样做:
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
然后我能够重新进入我的数据库,并在我第一次使用它们之后再次配置它们。
答案 8 :(得分:2)
这个命令就足以在centos 6.6上做神奇了。
mysql_install_db的
答案 9 :(得分:0)
在我的情况下,MySQL数据文件夹的路径有一个特殊字符“ç”,它让我得到...
致命错误:无法打开和锁定权限表:表'mysql.host' 不存在。
我已删除所有特殊字符,一切正常。
答案 10 :(得分:0)
在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
。我发现我的系统在my.cnf
中有一个默认/etc
,其中包含:
[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
构建时,您的默认数据目录/usr/local/mysql/data
与已定义/etc/my.cnf
的{{1}}冲突,后者定义datadir=/var/lib/mysql
。此外,同一文件中定义的pid-file
没有权限让mysql用户/组在/var/run/mysqld
中写入它。
快速解决方法是mv /etc/my.cnf /etc/my.cnf.old
,这将使您的通用源程序正常工作。
当然,您使用源RPM的经验是不同的。
答案 11 :(得分:0)
我在尝试启动服务器时遇到了同样的问题,然后按照"检查了"解。 但仍然有问题。问题是我的/etc/my.cnf文件没有指向我的 我在定义了--datadir的情况下执行mysql_install_db时定义的指定datadir。更新后,服务器正确启动。
答案 12 :(得分:0)
如果你有一台曾经愉快地运行MySQL的服务器,但是现在给出了这个错误,那么卸载并重新安装MySQL就太过分了。
在我的情况下,服务器死了并带了几个磁盘块。这会影响一些文件,包括/var/lib/mysql/mysql/host.frm和/var/lib/mysql/mysql/proc.frm
幸运的是,我可以从其他服务器上复制这些内容,这让我超过了表格错误。
答案 13 :(得分:0)
我在overlayf(overlay2)上遇到了类似的错误,这是Docker for Mac上的默认错误。 在使用mysql创建映像后,在映像上启动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上," daemon.json"可以通过选择"首选项..."菜单,然后选择"守护程序"选项卡,然后选择来编辑"高级"标签。)
/etc/docker/daemon.json:
{
"storage-driver" : "aufs",
"debug" : true,
"experimental" : true
}
价:
答案 14 :(得分:0)
在Windows中,以管理员身份在命令提示符下运行以下命令
Step 1:
mysql_install_db.exe
Step 2:
mysqld --initialize
Step 3:
mysqld --console
Step 4:
In windows
Step 4:
mysqladmin -u root password "XXXXXXX"
Step 5:
mysql -u root -p
答案 15 :(得分:-3)
我在Ubuntu 14.04.2上的案例LTS与my.cnf上的其他人类似,但对我而言,原因是〜/ .my.cnf是以前安装的剩余部分。删除该文件并清除/重新安装mysql-server后,它运行正常。