簡體   English   中英

修復 MySQL 服務器數據目錄

[英]Fix MySQL Server data directory

我在使用 MySQL Server 8 的 Windows 10 上遇到了一個非常奇怪的問題:

我無法使用mysqldnet start mysql啟動 mysql 服務器或服務,因為 mysql 報告缺少數據目錄(它無法編寫“測試文件”)。 它正在/正在查看C:\\Program Files\\MySQL\\MySQL Server 8.0

經過一些谷歌搜索后,我可以在運行mysqld --initialize后啟動 mysql 服務器,它確實在C:\\Program Files\\MySQL\\MySQL Server 8.0下創建了一個數據文件夾,並以某種方式重置了密碼。 不幸的是,在我連接到(我認為是)新初始化的 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] -> 下的 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 [ERROR] [MY-010952] [Server] 權限系統未能正確初始化。 有關如何將 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 ,它只是告訴我,它無法運行,因為升級工具已被棄用。

數據目錄上面的一個文件夾是一個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

我可以解決我的問題。 出於某種原因,已棄用的升級工具已集成到服務器工具中。 我不得不跑

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

這並不是問題的全部。 由於其他一些未知原因,我的 root 用戶密碼不再被接受。 因此,我必須通過以下步驟重置密碼: 第 4 章重置 Root 密碼:Windows 系統

總結:解決我的問題

  1. 使用mysqld--defaults-file參數指向正確的my.ini文件
  2. 修復 my.ini 文件中正確數據目錄的路徑
  3. 通過參數--upgrade=FORCE在服務器上運行升級
  4. 重置我的 mysql 用戶的密碼

我還是不明白,為什么會發生這種災難,反正......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM