这是我用来将所有数据库转储到 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_"
我知道我以前遇到过这个问题并设法解决了这个问题,所以我搜索了我的驱动器并找到了我上次编写的批处理文件。
对于遇到此问题的其他任何人,您需要做的是使用
--bootstrap
参数运行服务器守护程序。这是我用来将所有数据库转储到 SQL 文件并重新导入它们的脚本(也就是说,手动——并且不方便地——实现 SQLite
vacuum
命令的 MySQL 对应项)。如果您在 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] 部分添加此行进行编辑第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
这将显示用户表中的所有列。您将不得不像这样手动更改每一列:
UPDATE mysql.user SET select_priv='Y',insert_priv='Y',... WHERE user='root' AND host='localhost';
c) 像这样为 root@localhost 设置密码:
步骤 5. 删除
skip-grant-tables
和skip-networking
从my.ini
步骤 6。
net stop mysql
步骤 7。
net start mysql
现在您可以使用“whateverpasswordyouwant”作为密码以 root 身份登录 mysql。
试试看 !!!
供参考,
现在是
--initialize
,而不是已弃用--bootstrap
注意。为了完整起见:
要使用非特权帐户运行它:
然后启动服务器:
对于使用 XAMPP 并遇到此问题的任何人,XAMPP 都附带了这些默认 mysql 表的备份。
复制此文件夹中的所有内容
C:\xampp\mysql\backup\mysql
并将其粘贴到 中C:\xampp\mysql\data\mysql
,覆盖所有内容。请注意:数据可能会丢失——我不知道,我进行了全新安装。