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

问题描述 投票:35回答:5

我使用二进制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 

任何有关这方面的帮助将不胜感激。

mysql mysql-5.7
5个回答
63
投票

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

mysqld --initialize [随机root密码]

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


3
投票

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

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

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

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

3
投票

在Maria DB上你使用mysql_install_db。在我的例子中,我使用环境变量作为数据路径,这意味着mysqld不仅需要知道通过命令行在哪里,而且安装脚本也是如此:

mysql_install_db --user=root --datadir=$db_datapath

1
投票

我有同样的问题。由于某种原因--initialize没有工作。在使用不同的参数,配置和命令进行大约5个小时的试验和错误之后,我发现问题是由文件系统引起的。

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

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

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

innodb_flush_method=normal

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


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';”

密码也已成功更新。

© www.soinside.com 2019 - 2024. All rights reserved.