回答:
私は以前にこれに直面していたことを知っていたため、なんとか解決できたので、ドライブを検索して、前回書いたバッチファイルを見つけました。
この問題が発生する他の人にとって、あなたがする必要があるのは、--bootstrap
パラメータでサーバーデーモンを実行することです。
すべてのデータベースをSQLファイルにダンプし、それらを再インポートする(つまり、手動で、そして不便なことにvacuum
)SQLiteのコマンドに対応する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ファイル配布を取得します。
ステップ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
ステップ3。 net start mysql
この時点で、「mysql」と入力するだけでログインできます。ただし、許可テーブルを無効にしてGRANTコマンドを実行することはできません。
ステップ4. 1人のスーパーユーザーを手動で入力する必要があります。このような
a) 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のパスワードを次のように設定します。
UPDATE mysql.user SET password=PASSWORD('whateverpasswordyouwant')
WHERE user='root' AND host='localhost';
5.削除ステップskip-grant-tables
とskip-networking
からmy.ini
ステップ6。 net stop mysql
ステップ7。 net start mysql
これで、「whateverpasswordyouwant」をパスワードとして使用して、mysqlにrootとしてログインできます。
試してみる !!!
XAMPPを使用していてこの問題が発生した場合、XAMPPにはこれらのデフォルトmysqlテーブルのバックアップが付属しています。
このフォルダ内のすべてをコピーして、にC:\xampp\mysql\backup\mysql
貼り付けC:\xampp\mysql\data\mysql
、すべてを上書きします。
注意してください:データが失われる可能性があります-わかりませんが、クリーンインストールが行われました。
vacuum
SQLite3 などのコマンドのように)、手動でダンプして、新しいファイルを作成する必要があります。しかし、私はいつもそうすることを心配しているので、できるだけ長く延期します。
:-(