我在localhost上有一个数据库数据库。今天我发现数据库DB(架构)丢失了。我很确定我没有对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
为什么会这样?
我使用的是mysql 5.6.26和Windows 7系统。
非常感谢!
答案 0 :(得分:1)
最后我知道为什么,问题解决了。我昨天搜索了很多,但没有找到一个全面的答案。所以我在这里提出我的解决方案并希望它会有所帮助。
此问题的关键是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中的解决方案如下:
sc delete mysql
删除mysql服务。mysqld --install MySQL --defaults-file="C:\ProgramData\MySQL\MySQL Server X.Y\my.ini"
重新安装mysql服务,其中X.Y
是MySQL的版本。当然,您应该确保您的my.ini
文件位于该目录中。或者您可以自己更改目录。我想这个想法也适用于Linux。只需重新安装mysql服务并重置my.ini
目录。
就是这样。希望这可能会有所帮助。感谢。