Answers:
我知道我以前曾经遇到过这个问题,并设法解决了这个问题,所以我搜索了驱动器,发现了我上次编写的批处理文件。
对于其他遇到此问题的人,您需要做的是使用--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_"
如果您在Windows的MySQL授权表中遇到了这个奇怪的难题,我建议采取以下措施:
步骤1.获得没有安装程序的ZIP FIle发行版。
第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
第2步。 net stop mysql
第三步 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';
步骤5.卸下skip-grant-tables
和skip-networking
从my.ini
第六步 net stop mysql
步骤7 net start mysql
现在,您可以使用'whateverpasswordyouwant'作为密码以root用户身份登录mysql。
试试看 !!!
对于使用XAMPP并遇到此问题的任何人,XAMPP都附带了这些默认mysql表的备份。
复制此文件夹中的所有内容C:\xampp\mysql\backup\mysql
并将其粘贴到中C:\xampp\mysql\data\mysql
,覆盖所有内容。
警告:数据可能会丢失-我不知道,我安装了干净的计算机。
vacuum
SQLite3 等的命令),因此我不得不手动转储它并创建一个新的数据库,因为我没有太多空间。但是我一直很担心这样做,所以我尽可能地推迟它。
:-(