在mysql中重新创建一个`mysql.user`表

时间:2017-11-19 15:47:47

标签: mysql sql system-tables

我发现我的Map.get(varName)表格搞砸了,并使用mysql.user删除它,如何手动创建此特殊表格并将新帐户添加到其中。

2 个答案:

答案 0 :(得分:2)

NB 我从未尝试过这个,所以我不知道它是否会起作用。你已被警告!!

在您执行任何操作之前,请关闭MySQL服务并备份数据文件夹(将其复制到其他位置)。

接下来,尝试创建新数据目录并运行mysql_install_db(从MySQL安装目录scripts/mysql_install_db --datadir=<new data directory>),或使用虚拟机并执行相同操作。无论您做什么,都要将 NOT 安装到原始文件夹中。 使用相同版本的MySQL

无论您使用哪种方法,请从<mysql data folder>/data获取结果文件(应将其称为user.MYDuser MYIuser.frm)并将其复制到损坏的文件夹中。确保用户权限与文件夹的其余部分相同(所有者和组应该是读/写)。

重新启动MySQL服务并查看是否可以进入系统(不需要登录信息,但您必须以root身份登录MySQL。如果可以,请重新创建应用程序的相关用户如果没有,您仍然可以备份数据文件夹。

如果它不起作用,并假设您有最近的备份,请使用mysql_install_db完全重新创建数据文件夹(确保您在开始之前仍然拥有该文件夹的副本) out),创建用户,然后从上一次良好的备份中逐个恢复您的个人数据库。不要还原mysql数据库和表 - 它们将在您还原其他数据库时构建。

首先在虚拟机上尝试所有这一切 - 它将帮助您找到任何问题

祝你好运

答案 1 :(得分:0)

感谢@DaveyBoy的answer。我在 ubuntu 16.04,mysql 5.7.20 上进行了如下操作,并获得了 mysql.user 表:

sudo mysqld --initialize --datadir=~/data_tmp

sudo cp ~/data_tmp/mysql/user.frm /var/lib/mysql/mysql
sudo cp ~/data_tmp/mysql/user.MYD /var/lib/mysql/mysql
sudo cp ~/data_tmp/mysql/user.MYI /var/lib/mysql/mysql

sudo chown mysql:mysql /var/lib/mysql/mysql/user.frm
sudo chown mysql:mysql /var/lib/mysql/mysql/user.MYD
sudo chown mysql:mysql /var/lib/mysql/mysql/user.MYI

mysql cli select * from mysql.user中,表 mysql.user 现在应该显示。