无法打开和锁定权限表:表'mysql.user'不存在

时间:2015-12-29 18:16:47

标签: mysql mysql-5.7

我使用二进制zip安装了MySQL社区服务器5.7.10。我在c:\mysql中提取了zip并在c:\mysql\data中创建了数据文件夹。我将配置文件创建为my.ini并将其放在c:\mysql(提取的zip的根文件夹)中。以下是my.ini文件

的内容
# set basedir to your installation path
basedir=C:\mysql
# set datadir to the location of your data directory
datadir=C:\mysql\data

我正在尝试使用mysqld --console启动MySQL,但过程中止并出现以下错误。

2015-12-29T18:04:01.141930Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2015-12-29T18:04:01.141930Z 0 [ERROR] Aborting 

对此有任何帮助将不胜感激。

7 个答案:

答案 0 :(得分:59)

您必须通过运行以下命令来初始化数据目录

mysqld --initialize [使用随机root密码]

mysqld --initialize-insecure [使用空白root密码]

答案 1 :(得分:3)

mysqld --initialize初始化数据目录,然后mysqld&

如果您已经启动了mysqld&没有mysqld --initialize你可能必须删除数据目录中的所有文件

您还可以修改/etc/my.cnf以添加数据目录的自定义路径,如下所示:

[mysqld]
...  
datadir=/path/to/directory

答案 2 :(得分:0)

如上所述,我和mysql-5.7.18有类似的问题,我这样做是为了这个 1.从“MYSQL_HOME \ bin \ mysqld.exe --initialize-insecure”执行此命令 2.然后启动“MYSQL_HOME \ bin \ mysqld.exe”
3.将工作台连接到此localhost:3306,用户名为“root” 4.然后执行此查询“SET PASSWORD FOR'root'@'localhost'='root';”

密码也已成功更新。

答案 3 :(得分:0)

我有同样的问题。由于某些原因,--initialize无法正常工作。 经过大约5个小时的反复试验,并使用了不同的参数,配置和命令,我发现问题是由文件系统引起的。

我想在大型USB HDD驱动器上运行数据库。大于2 TB的驱动器已分区为GPT!这是一个带有解决方案的错误报告:

https://bugs.mysql.com/bug.php?id=28913

简而言之:将以下行添加到您的my.ini中:

innodb_flush_method=normal

我在Windows上的mysql 5.7遇到了这个问题。

答案 4 :(得分:0)

在laragon中,从“ C:\ laragon \ data \ mysql”中删除所有内部数据文件,然后重新启动,这对我有用

答案 5 :(得分:0)

我的问题是由不正确的数据库还原引起的。 当我删除 db 时,它也获取了系统 mysql 表,因为我在 -p 之后添加了一个空格,如下所述:mysqldump is dumping undesired system tables

启动 docker 实例会起作用,然后我会恢复(并损坏)数据库,它仍然会继续运行,但在重新启动后它会以错误代码 1 退出。

解决方案是在没有系统表的情况下正确转储和恢复。

答案 6 :(得分:0)

当服务器重新启动时,我遇到了与版本 Mysql 5.7.33 相同的问题。我通过复制其他服务器用户文件 scp /var/lib/mysql/mysql/user.* root@dest:/var/lib/mysql/mysql 来修复它。