Mysql
在 Windows 中安裝預設 MySQL 表 (mysql_install_db)
在 Linux 中,可以使用
mysql_install_db
腳本創建預設的 MySQL 授權表,但這在 Windows 上不起作用。如何在 Windows 上安裝預設授權表?
(不,我不是在尋找 Google 的結果中充滿了關於它們如何在 Windows 上自動安裝的響應,因為這僅適用於安裝程序分發,而不是 ZIP 包。此外,這在之後沒有幫助MySQL已安裝,數據目錄損壞或正在更換等。)
我知道我以前遇到過這個問題並設法解決了這個問題,所以我搜尋了我的驅動器並找到了我上次編寫的批處理文件。
對於遇到此問題的其他任何人,您需要做的是使用
--bootstrap
參數執行伺服器守護程序。這是我用來將所有數據庫轉儲到 SQL 文件並重新導入它們的腳本(也就是說,手動——並且不方便地——實現 SQLite
vacuum
命令的 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_"