【问题标题】:Fix MySQL Server data directory修复 MySQL 服务器数据目录
【发布时间】:2020-06-22 20:25:33
【问题描述】:

我在使用 MySQL Server 8 的 Windows 10 上遇到了一个非常奇怪的问题:

我无法启动 mysql 服务器或服务 mysqldnet start mysql mysql 报告缺少 data 目录(它无法写入“测试文件”)。它正在/正在查看C:\Program Files\MySQL\MySQL Server 8.0

经过一番谷歌搜索后,我可以在运行后启动 mysql 服务器 mysqld --initialize,它确实在C:\Program Files\MySQL\MySQL Server 8.0 下创建了一个 data 文件夹并以某种方式重置了密码。不幸的是,在我连接到(我认为是)新初始化的 mysql 服务器后,我所有的数据库都消失了。

经过一番谷歌搜索后,我发现我的电脑上有以下目录: 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] 下的 datadir 条目 -> 不走运。

感谢任何帮助。

更新:

以下错误和警告出现在我的“.err”文件中:

2020-03-11T19:21:10.658537Z 0 [警告] [MY-010915] [服务器] 'NO_ZERO_DATE'、'NO_ZERO_IN_DATE' 和 'ERROR_FOR_DIVISION_BY_ZERO' sql 模式应与严格模式一起使用。它们将在未来的版本中与严格模式合并。

2020-03-11T19:21:10.659813Z 0 [系统] [MY-010116] [服务器] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.19) 开始为进程4040

2020-03-11T19:21:11.340219Z 0 [警告] [MY-010068] [服务器] CA 证书 ca.pem 是自签名的。

2020-03-11T19:21:11.358861Z 0 [警告] [MY-013143] [服务器] mysql.user 的列数错误。预期 51,找到 49。该表可能已损坏

2020-03-11T19:21:11.359562Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.db 加载。该表可能已损坏!

2020-03-11T19:21:11.360108Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.tables_priv 加载。该表可能已损坏!

2020-03-11T19:21:11.360680Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.tables_priv 加载。该表可能已损坏!

2020-03-11T19:21:11.361259Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.columns_priv 加载。该表可能已损坏!

2020-03-11T19:21:11.361881Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.procs_priv 加载。该表可能已损坏!

2020-03-11T19:21:11.362474Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.procs_priv 加载。该表可能已损坏!

2020-03-11T19:21:11.363076Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.proxies_priv 加载。该表可能已损坏!

2020-03-11T19:21:11.363713Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.proxies_priv 加载。该表可能已损坏!

2020-03-11T19:21:11.364309Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.proxies_priv 加载。该表可能已损坏!

2020-03-11T19:21:11.364908Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.role_edges 加载。该表可能已损坏!

2020-03-11T19:21:11.365505Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.role_edges 加载。该表可能已损坏!

2020-03-11T19:21:11.366123Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.default_roles 加载。该表可能已损坏!

2020-03-11T19:21:11.366774Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.default_roles 加载。表可能已损坏! 2020-03-11T19:21:11.367391Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.global_grants 加载。该表可能已损坏!

2020-03-11T19:21:11.368010Z 0 [警告] [MY-013139] [服务器] 无法从 mysql.password_history 加载。表可能已损坏! 2020-03-11T19:21:11.369081Z 0 [错误] [MY-013139] [服务器] 无法从 mysql.global_grants 加载。该表可能已损坏!

2020-03-11T19:21:11.369779Z 0 [错误] [MY-010952] [服务器] 权限系统未能正确初始化。有关如何将 MySQL 升级到新版本的完整说明,请参阅 MySQL 手册中的“升级 MySQL”部分。

2020-03-11T19:21:11.371103Z 0 [错误] [MY-010119] [服务器] 中止

2020-03-11T19:21:12.355716Z 0 [系统] [MY-010910] [服务器] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: 关机完成 (mysqld 8.0.19 ) MySQL 社区服务器 - GPL。

我尝试运行 mysql_upgrade,它只是告诉我,它无法运行,因为升级工具已被弃用..

【问题讨论】:

    标签: mysql windows server configuration


    【解决方案1】:

    data dir上面一个文件夹是一个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
    

    【讨论】:

    • 感谢您的帮助。不幸的是,这并没有解决我的问题。但也许我更进一步。使用 --defaults-file 标志,我能够在 .err 文件中生成一些错误消息,请。请参阅我的问题中的更新部分
    【解决方案2】:

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

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

    这还不是问题的全部。由于其他一些未知原因,我的 root 用户密码不再被接受。 因此我不得不通过这个程序重置我的密码:Chapter 4 Resetting the Root Password: Windows Systems

    总结:解决我的问题

    1. 使用 mysqld--defaults-file 参数指向正确的 my.ini 文件
    2. 修复 my.ini 文件中正确数据目录的路径
    3. 通过参数--upgrade=FORCE在服务器上运行升级
    4. 重置我的mysql用户密码

    我仍然不知道,为什么会发生这样的灾难……

    【讨论】:

    • 我不认为这是一个 mysql 问题,如果有更多问题,请使用 smart 来检查你的硬盘。还要检查windows的事件日志,应该有一些错误
    【解决方案3】:

    将 mysqld 添加到系统路径变量。 路径一般看起来像“C:\Program Files\MySQL\MySQL Server 8.0\bin”

    首先,将windows服务安装为MySQL80。 以管理员身份打开cmd并使用。

    mysqld --install MySQL80 --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"

    注意:--defaults-file 将是您的 MySQL ini 文件

    发出以下命令启动服务

    sc 启动 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

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      相关资源
      最近更新 更多