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

lc8prwob  于 2023-01-08  发布在  Mysql
关注(0)|答案(7)|浏览(177)

我使用二进制zip安装了MySQL Community Server 5.7.10。我在c:\mysql中解压缩了zip,并在c:\mysql\data中创建了数据文件夹。我创建了配置文件my.ini,并将其放在c:\mysql(解压缩的zip的根文件夹)中。

# 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

对此提供任何帮助都将不胜感激。

eivnm1vs

eivnm1vs1#

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

mysqld --initialize[使用随机root密码]
mysqld --initialize-insecure[root用户密码为空]

8i9zcol2

8i9zcol22#

mysql_install_db脚本还需要datadir参数:

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

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

wbrvyc0a

wbrvyc0a3#

mysqld --初始化以初始化数据目录,然后执行mysqld &
如果您已经启动了mysqld&而没有启动mysqld --initialize,那么您可能必须删除数据目录中的所有文件
您还可以修改/etc/my.cnf以向数据目录添加自定义路径,如下所示:

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

ercv8c1e4#

如上所述,我在mysql-5. 7. 18中也遇到过类似的问题,
我是这样做的
1.已从“MYSQL_HOME\bin\mysqld.exe--初始化-不安全”执行此命令
2.然后启动“MYSQL_HOME\bin\mysqld.exe”
3.使用用户名'root'将工作台连接到此本地主机:3306
4.然后执行此查询“设置'root'的密码@'localhost' = 'root';“
密码也已成功更新。

jm81lzqq

jm81lzqq5#

我也遇到了同样的问题。由于某种原因--initialize不起作用。经过大约5个小时的不同参数、配置和命令的反复试验,我发现问题是由文件系统引起的。
我想在一个大的USB硬盘驱动器上运行一个数据库。大于2 TB的驱动器是GPT分区的!下面是一个错误报告和解决方案:
https://bugs.mysql.com/bug.php?id=28913
简而言之:将以下行添加到my. ini中:

innodb_flush_method=normal

我在Windows上使用MySQL 5.7时遇到了这个问题。

gblwokeq

gblwokeq6#

我的问题是由不正确的数据库恢复引起的。当我转储数据库时,它也会拾取系统mysql表,因为我在-p后面添加了一个空格,如下所述:mysqldump is dumping undesired system tables
启动Docker示例可以工作,然后我恢复(并损坏)数据库,它仍然可以继续运行,但在重新启动后,它将退出,错误代码为1。
解决方案是在没有系统表的情况下正确地转储和恢复。

c90pui9n

c90pui9n7#

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

相关问题