57

我使用二进制 zip 安装了 MySQL 社区服务器 5.7.10。我提取了 zipc:\mysql并在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

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

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 

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

4

7 回答 7

82

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

mysqld --initialize[随机root密码]

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

于 2016-01-30T08:32:22.903 回答
21

mysql_install_db脚本还需要datadir参数:

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

在 Maria DB 上,您使用安装脚本mysql_install_db来安装和初始化。就我而言,我使用环境变量作为数据路径。不仅mysqld需要知道数据在哪里(通过命令行指定),安装脚本也需要。

于 2018-05-23T21:07:06.023 回答
5

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

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

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

[mysqld]
...  
datadir=/path/to/directory
于 2017-04-04T09:28:26.087 回答
2

我有同样的问题。由于某种原因--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 时遇到了这个问题。

于 2018-11-30T08:41:18.253 回答
2

如上所述,我对 mysql-5.7.18 有类似的问题,
我是这样做的

1. 从“MYSQL_HOME\bin\mysqld.exe --initialize-insecure”执行此命令
2. 然后启动“MYSQL_HOME\bin\ mysqld.exe"
3. 使用用户名 'root' 将工作台连接到此 localhost:3306
4. 然后执行此查询 "SET PASSWORD FOR 'root'@'localhost' = 'root';"

密码也更新成功。

于 2018-04-10T17:21:53.650 回答
0

我的问题是由不正确的数据库还原引起的。当我对数据库进行调用时,它还拾取了系统 mysql 表,因为我在-p 此处提到之后添加了一个空格:mysqldump is dumping undesired system tables

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

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

于 2021-04-28T12:37:24.463 回答
0

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

于 2021-05-06T03:32:56.887 回答