在 Windows 中安装默认 MySQL 表 (mysql_install_db)

Syn*_*ech 12 mysql windows installation

在 Linux 中,可以使用mysql_install_db脚本创建默认的 MySQL 授权表,但这在 Windows 上不起作用。

如何在 Windows 上安装默认授权表?

(不,我不是在寻找这样的回应,即 Google 的结果充满了有关它们如何自动安装在 Windows 上的信息,因为这只是安装程序分发的情况,而不是 ZIP 包。此外,这在之后也无济于事MySQL 已安装且数据目录已损坏或正在被替换等。)

Syn*_*ech 13

我知道我以前遇到过这个问题并设法弄清楚了,所以我搜索了我的驱动器并找到了我上次编写的批处理文件。

对于遇到此问题的任何其他人,您需要做的是使用--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_"
Run Code Online (Sandbox Code Playgroud)


Rol*_*DBA 5

如果您在 Windows 的 MySQL 授权表中遇到过这种奇怪的困境,我建议您执行以下操作:

步骤 1. 获取没有安装程序的 ZIP 文件发行版。

步骤 2. 将其内容解压缩到 C:\MySQLZipStuff

步骤 3. 查找文件夹 C:\MySQLZipStuff\data\mysql

步骤 4. 将所有文件复制C:\MySQLZipStuff\data\mysql到所需数据目录的 mysql 文件夹中。

第 5 步。 net start mysql

如果你已经有 mysql 文件夹,你可以这样做:

步骤 1.my.ini通过在 [mysqld] 部分添加此行进行编辑

[mysqld]
skip-grant-tables
skip-networking
Run Code Online (Sandbox Code Playgroud)

第2步。 net stop mysql

第 3 步。 net start mysql

此时,您只需输入“mysql”即可进入。但是,您无法在禁用授权表的情况下运行 GRANT 命令。

第 4 步。您必须手动输入一名超级用户。像这样

一种) INSERT INTO mysql.user SET user='root',host='localhost';

b) SELECT * FROM mysql.user WHERE user='root' AND host='localhost'\G

这将显示用户表中的所有列。您必须像这样手动更改每一列:

更新 mysql.user SET select_priv='Y',insert_priv='Y',... WHERE user='root' AND host='localhost';

c) 为 root@localhost 设置密码,如下所示:

UPDATE mysql.user SET password=PASSWORD('whateverpasswordyouwant')
WHERE user='root' AND host='localhost';
Run Code Online (Sandbox Code Playgroud)

步骤 5. 删除skip-grant-tablesskip-networkingmy.ini

第 6 步。 net stop mysql

第 7 步。 net start mysql

现在您可以使用“whateverpasswordyouwant”作为密码以root身份登录mysql。

试一试 !!!