web-dev-qa-db-ja.com

MySQLの管理者アカウントパスワードをリセットまたは回復する方法

「継承」したMySQLデータベースがあり、管理者の資格情報が与えられていません。ただし、それが実行されるボックスにはアクセスできます。管理者の資格情報を回復するか、新しい資格情報を作成する方法はありますか?

14
slolife

MySQLリファレンスマニュアルの ルートパスワードのリセットに関する章 を読んで実行します。

この手順では、認証なしでmysqlデーモンを起動し、資格情報を提供せずに接続できるようにします。このモードでは、通常どおり接続し、パスワードと許可をリセットできます。その後、適切な承認を得てmysqlを再び開始することを忘れないでください。

15
David Schmitt

これがDebian/Ubuntuボックスである場合、debian-sys-maintと呼ばれるrootと同等の特別なアカウントがあります。パスワードは/ etc/mysql/debian.cnfで読むことができます

そのパスワードを使用して、debian-sys-maintとしてmysqlにログインできます。

mysql --defaults-file=/etc/mysql/debian.cnf mysql

ログインしたら、次の手順を実行します。

update user set password=password('<new password>') where user='root';
flush privileges;
quit;

これで、新しいパスワードを使用してrootにアクセスできるようになります。

mysql -uroot -p
6
Brent

Rootユーザーが存在しませんでした。オン

CREATE USER root@localhost;

わかった

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

解決策は

mysqld_safe  --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

その後、私はこれから少し助けてすべての特権を1つずつ追加しました:

mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N

(そしてこれはもっと自動化することができ、もっと自動化すべきです)

注:INSERTで「Y」の正しい数を見つけることはPITAです。

3
kqw

MySQLリファレンスマニュアル の手順はあまり明確ではないので、ここではわかりやすい言葉で答えようとしています。 (この回答はMacBook OSXユーザーに関連しています):

  1. 現在のパスワードがわからないため、MySQLサーバーは現在のログイン認証情報をスキップ/バイパスして実行する必要があります。 MySQLサーバーに次の方法でアクセス許可テーブルをスキップするように指示します:
    • MySQLサーバーを停止します(すでに稼働している場合)。
    • MySQL構成ファイル_my.cnf_を見つけます。 (私にとっては、@ _/Applications/XAMPP/xamppfiles/etc_に配置されました。見つからない場合は、検索するだけです)。
    • 任意のテキストエディタで_my.cnf_ファイルを開きます。
    • _"skip-grant-tables"_セクションの最後に_[mysqld]_(引用符なし)を追加し、ファイルを保存します。
    • MySQLサーバーを起動します。 _skip-grant-tables_オプションで始まります。
  2. Terminalを開き、mysqlコマンドを実行します
  3. コマンドを実行mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. コマンドを実行_mysql> FLUSH PRIVILEGES;_
  5. コマンドを実行_mysql> exit_
  6. MySQLサーバーを再起動します。
0
Saurabh Hooda