修复MySQL Server数据目录

jtw3ybtb  于 2023-08-02  发布在  Mysql
关注(0)|答案(4)|浏览(117)

我在Windows 10和MySQL Server 8上遇到了一个非常奇怪的问题:
我无法用mysqldnet start mysql启动mysql服务器或服务,因为mysql报告了一个丢失的data目录(它无法写入“测试文件”)。它正在/正在寻找C:\Program Files\MySQL\MySQL Server 8.0
在谷歌上搜索了一下之后,我可以在运行mysqld --initialize之后启动mysql服务器,这确实在C:\Program Files\MySQL\MySQL Server 8.0下面创建了一个data文件夹,并以某种方式重置了密码。不幸的是,在我连接到(我想是的)新初始化的mysql服务器后,我所有的数据库都消失了。
经过一些更多的谷歌搜索我发现,有我的PC上的以下目录:C:\ProgramData\MySQL\MySQL Server 8.0 ...瞧在Data目录中,有一些文件夹名称是我的(丢失的)数据库。所以我很确定,我的数据在里面。
但是我如何设置mysql服务器来使用这个正确的数据/设置。我不想使用新初始化的MySQL服务器。
我试着将文件夹从C:\ProgramData\MySQL\MySQL Server 8.0复制到C:\Program Files\MySQL\MySQL Server 8.0,但没有成功。一次服务器无法启动,另一次数据被忽略。我还尝试将my.ini复制到C:\ProgramData\MySQL\MySQL Server 8.0,并更改[mysqld] ->没有运气。
任何帮助都是感激的。
更新:
以下错误和警告出现在我的“.err”文件中:
2020-03- 11 T19:21:10.658537Z 0 [警告] [MY-010915] [服务器] 'NO_ZERO_DATE'、'NO_ZERO_IN_DATE'和'ERROR_FOR_DIVISION_BY_ZERO' sql模式应与严格模式一起使用。它们将在未来的版本中与严格模式合并。
2020-03- 11 T19:21:10.659813Z 0 [系统] [MY-010116] [服务器] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe(mysqld 8.0.19)启动为进程4040
2020-03- 11 T19:21:11.340219Z 0 [警告] [MY-010068] [服务器] CA证书ca.pem是自签名的。
2020-03-11T19:21:11.358861Z 0 [Warning] [MY-013143] [Server] Column count of mysql.user is wrong.预期51,找到49。表可能已损坏
2020-03-11T19:21:11.359562Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.db.表可能已损坏!
2020-03-11T19:21:11.360108Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.tables_priv.表可能已损坏!
2020-03-11T19:21:11.360680Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.tables_priv.表可能已损坏!
2020-03-11T19:21:11.361259Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.columns_priv.表可能已损坏!
2020-03-11T19:21:11.361881Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.procs_priv.表可能已损坏!
2020-03-11T19:21:11.362474Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.procs_priv.表可能已损坏!
2020-03-11T19:21:11.363076Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.proxies_priv.表可能已损坏!
2020-03-11T19:21:11.363713Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.proxies_priv.表可能已损坏!
2020-03-11T19:21:11.364309Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.proxies_priv.表可能已损坏!
2020-03-11T19:21:11.364908Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.role_edges.表可能已损坏!
2020-03-11T19:21:11.365505Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.role_edges.表可能已损坏!
2020-03-11T19:21:11.366123Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.default_roles.表可能已损坏!
2020-03-11T19:21:11.366774Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.default_roles.表可能已损坏!2020-03- 11 T19:21:11.367391Z 0 [Warning] [MY-013139] [Server]无法从mysql.global_赠款加载。该表可能已损坏!
2020-03-11T19:21:11.368010Z 0 [Warning] [MY-013139] [Server] Cannot load from mysql.password_history.表可能已损坏!2020-03- 11 T19:21:11.369081Z 0 [ERROR] [MY-013139] [Server]无法从mysql.global_赠款加载。该表可能已损坏!
2020-03- 11 T19:21:11.369779Z 0 [ERROR] [MY-010952] [Server]特权系统无法正确初始化。有关如何将MySQL升级到新版本的完整说明,请参阅MySQL手册中的“升级MySQL”部分。
2020-03- 11 T19:21:11.371103Z 0 [错误] [MY-010119] [服务器]正在中止
2020-03- 11 T19:21:12.355716Z 0 [系统] [MY-010910] [服务器] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe:关闭完成(mysqld 8.0.19)MySQL Community Server - GPL。
我试着运行mysql_upgrade,它只是告诉我,它不能运行,因为升级工具已被弃用。

s2j5cfk0

s2j5cfk01#

数据目录上面的一个文件夹是my.ini文件,里面有mysql的主配置文件。
Mysql通过用

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80

字符串
看看这个选项是否正确

datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data

4urapxun

4urapxun2#

我可以解决我的问题。由于某些原因,已弃用的升级工具被集成到服务器工具中。我不得不跑

mysqld --defaults-file="C:/ProgramData/MySQL/MySQL Server 8.0/my.ini" --upgrade=FORCE

字符串
这并不是问题的全部。由于其他一些未知的原因,我的root用户密码不再被接受。Threfore我不得不通过这个过程重置我的密码:Chapter 4 Resetting the Root Password: Windows Systems
摘要:通过以下方式解决我的问题
1.使用mysqld的**--defaults-file参数指向正确的my.ini文件
1.修复my.ini文件中正确数据目录的路径
1.通过参数
--upgrade=FORCE**在服务器上运行升级
1.重置mysql用户密码
我仍然不知道,为什么这场灾难会发生,无论如何。

vuktfyat

vuktfyat3#

将mysqld添加到系统路径变量。路径通常类似于“C:\Program Files\MySQL\MySQL Server 8.0\bin”
首先,将Windows服务安装为MySQL 80。以管理员身份打开cmd并使用。

mysqld --install MySQL80 --defaults-file=“C:\ProgramData\MySQL\MySQL Server 8.0\my.ini”
注意:--defaults-file将是您的MySQL ini文件

发出以下命令以启动服务

sc start MySQL80

如果您想手动启动mysqld,请使用以下命令

mysqld --defaults-file=“C:\ProgramData\MySQL\MySQL Server 8.0\my.ini”--console
注意:--console会输出mysqld日志。检查[Error]块并相应地修复错误。
参考号https://dev.mysql.com/doc/refman/8.0/en/windows-start-service.html

guicsvcw

guicsvcw4#

我有这个问题,因为默认的C:\ProgramData\MySQL\MySQL Server 8.0\my.ini文件中有一个错字。
在安装程序v1.6创建的文件中:

datadir=C:/ProgramData/MySQL/MySQL Server 8.0\Data

字符串
问题:在带空格的文件路径上没有引号,而且他们混淆了正斜杠和反斜杠。斜线可能不相关,因为它的Windows,但缺乏引号肯定是。反正我都修好了。
修复:用以下内容覆盖该行:

datadir="C:/ProgramData/MySQL/MySQL Server 8.0/Data"

相关问题