Mysql

在 Windows 中安裝預設 MySQL 表 (mysql_install_db)

  • October 28, 2015

在 Linux 中,可以使用mysql_install_db腳本創建預設的 MySQL 授權表,但這在 Windows 上不起作用。

如何在 Windows 上安裝預設授權表?

(不,我不是在尋找 Google 的結果中充滿了關於它們如何在 Windows 上自動安裝的響應,因為這僅適用於安裝程序分發,而不是 ZIP 包。此外,這在之後沒有幫助MySQL已安裝,數據目錄損壞或正在更換等。)

我知道我以前遇到過這個問題並設法解決了這個問題,所以我搜尋了我的驅動器並找到了我上次編寫的批處理文件。

對於遇到此問題的其他任何人,您需要做的是使用--bootstrap參數執行伺服器守護程序。

這是我用來將所有數據庫轉儲到 SQL 文件並重新導入它們的腳本(也就是說,手動——並且不方便地——實現 SQLitevacuum命令的 MySQL 對應項)。

::Start the server, change to the MySQL bin directory, and dump all databases
net start MySQL
cd       /d "%serverdir%\MySQL\bin"
mysqldump  -uroot -p --all-tablespaces --all-databases --add-drop-database --add-drop-table --add-locks --comments --complete-insert --compress --create-options --events --routines --quick --quote-names --set-charset --triggers > %temp%\all.sql

::Stop the server and rename the data directory (as backup)
net stop mysql
ren         "%datadir%\MySQL"        MySQL_

::Delete data folder in MySQL directory, optionally copy old mysql tables
rd    /s /q "%serverdir%\MySQL\data"
md          "%serverdir%\MySQL\data"
xcopy /s /e "%datadir%\MySQL_\mysql" "%serverdir%\MySQL\data"

::Bootstrap the server (creates grant tables if they don’t exist)
mysqld --bootstrap

::Run server, optionally upgrade tables and move upgrade log to data directory
start mysqld --skip-grant-tables
mysql_upgrade --force
move "%serverdir%\MySQL\bin\mysql_upgrade_info" "%serverdir%\MySQL\data"

::Import all databases, shutdown, delete logs, then move to old data dir
mysql      -uroot -p < %temp%\all.sql
mysqladmin -uroot -p shutdown
md  "%datadir%\MySQL"
del "%serverdir%\MySQL\data\ib_logfile?"
xcopy /s /e "%serverdir%\MySQL\data\*" "%datadir%\MySQL"
rd    /s /q "%serverdir%\MySQL\data"

::Start the server, if it works, then all should be well, so del
net start mysql
rd    /s /q "%datadir%\MySQL_"

引用自:https://dba.stackexchange.com/questions/1592