在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_"
上一篇:sql-server – 如何在Ubuntu上完全删除SQL Server 2017?


下一篇:java – 在samsung mobile中安装j2me应用程序