mysql 由于数据目录更改导致数据库丢失

mysql database missing due to datadir change

我在本地主机上有一个数据库 DB。今天发现数据库DB(schema)不见了。我很确定我没有对 DROP 或 DELETE 做任何事情。

现在我的情况是这样的:

我的设置文件 my.ini 在 C:\ProgramData\MySQL\MySQL Server 5.6\ 中并设置 datadir=C:/ProgramData/MySQL/MySQL Server 5.6/

但是我运行SHOW GLOBAL VARIABLES LIKE 'datadir';,我还是得到C:\Program Files\MySQL\MySQL Server 5.6

为什么会这样?

我用的是mysql5.6.26和Windows7系统。

非常感谢!

终于知道原因了,问题解决了。我昨天在谷歌上搜索了很多,但没有找到一个全面的答案。所以我在这里给出我的解决方案,希望它会有所帮助。

这个问题的关键点是 MySQL 没有找到我的数据库 DB 的目录:C:\ProgramData\MySQL\MySQL Server 5.6\。这可能会导致我遇到 1045 access denied for user 'aaa' ... 的初始错误,因为 MySQL 在 C:\Program Files\MySQL\MySQL Server 5.6\ 中使用了不同的数据库,其中用户 'aaa' 不完全存在。我不知道为什么会这样,虽然现在解决方案对我来说很简单。

首先,检查你的数据库在哪里。这可以通过在硬盘上搜索数据库的名称来完成。如果数据库的目录和SHOW GLOBAL VARIABLES LIKE 'datadir';的输出不一样,那么问题和我的一模一样

那么Windows中的解法如下:

  1. 通过 sc delete mysql 删除 mysql 服务。
  2. 通过 mysqld --install MySQL --defaults-file="C:\ProgramData\MySQL\MySQL Server X.Y\my.ini" 重新安装 mysql 服务,其中 X.Y 是 MySQL 的版本。当然,您应该确保您的 my.ini 文件位于该目录中。或者您可以自己更改目录。

我想这个想法也适用于 Linux。只需重新安装 mysql 服务并重置 my.ini.

的目录即可

就是这样。希望这会有所帮助。谢谢。