web-dev-qa-db-ja.com

MySQLの削除された「root」ユーザーとパスワードの復元

OS Xで実行されているMAMP/MySQLのローカルdevセットアップでrootユーザーを誤って削除しました。MySQLに戻るために作成された他のユーザーはいません。

これは軽度の悪夢であり、rootなしでは何もできないようです。

これを見つけました: http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html これはまさに私が必要なもののようです。

私の大雑把な検索の多くが成功せずに試みた人々をもたらしたので、私はまた、MAMPの再インストールがトリックを行うとは思わない。

root @ localhostをMAMPのMySQLに再作成するOSXフレンドリーな方法を知っている人はいますか?私は基本的に、MySQLがMAMPのどこに住んでいるか、またはターミナルで正しいコマンドを実行してそれを試して修正する方法を知りません。

更新

以下のいくつかのオプションを試して、ルートを無効に復元し、MAMPアプリケーション全体のバックアップを復元することにしました。ルートを取り戻したので、phpmyadminなどを開くことができます。

33
PHPeer

早くて汚い方法がある

SysAdmin権限を持つユーザーを取得し、次の操作を実行します。

  1. [skip-grant-tables]を[mysqld]セクションの下のmy.cnfに追加します

  2. mysqlを再起動します

  3. パスワードなしでmysqlと入力してEnterキーを押します

  4. これを実行:

    DELETE FROM mysql.user 
    WHERE  user = 'root' 
           AND Host = 'localhost'; 
    
    INSERT INTO mysql.user 
    SET user = 'root', 
        Host = 'localhost', 
        password = Password('whatevernewpassword'), 
        Select_priv = 'y',
        Insert_priv = 'y',
        Update_priv = 'y',
        Delete_priv = 'y',
        Create_priv = 'y',
        Drop_priv = 'y',
        Reload_priv = 'y',
        Shutdown_priv = 'y',
        Process_priv = 'y',
        File_priv = 'y',
        Grant_priv = 'y',
        References_priv = 'y',
        Index_priv = 'y',
        Alter_priv = 'y',
        Show_db_priv = 'y',
        Super_priv = 'y',
        Create_tmp_table_priv = 'y',
        Lock_tables_priv = 'y',
        Execute_priv = 'y',
        Repl_slave_priv = 'y',
        Repl_client_priv = 'y',
        Create_view_priv = 'y',
        Show_view_priv = 'y',
        Create_routine_priv = 'y',
        Alter_routine_priv = 'y',
        Create_user_priv = 'y',
        Event_priv = 'y',
        Trigger_priv = 'y',
        Create_tablespace_priv = 'y';
    
  5. mysqlを終了します

  6. [mysqld]セクションのmy.cnfから「skip-grant-tables」を削除します

  7. mysqlを再起動します

これですべてです!

62
RolandoMySQLDBA

http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html の翻訳バージョン-OS Xの場合.

TextEdit.appを開き、[形式]-> [プレーンテキストの作成]を選択します。
以下をカットしてTextEditに貼り付け、[〜#〜] home [〜#〜]という名前のrestore_root_privileges.sqlフォルダーに保存します。

update mysql.user set Super_priv='y' where user='root';
update mysql.user set Select_priv='y' where user='root';
update mysql.user set Insert_priv='y' where user='root';
update mysql.user set Update_priv='y' where user='root';
update mysql.user set Delete_priv='y' where user='root';
update mysql.user set Create_priv='y' where user='root';
update mysql.user set Drop_priv='y' where user='root';
update mysql.user set Reload_priv='y' where user='root';
update mysql.user set Shutdown_priv='y' where user='root';
update mysql.user set Process_priv='y' where user='root';
update mysql.user set File_priv='y' where user='root';
update mysql.user set Grant_priv='y' where user='root';
update mysql.user set References_priv='y' where user='root';
update mysql.user set Index_priv='y' where user='root';
update mysql.user set Alter_priv='y' where user='root';
update mysql.user set Show_db_priv='y' where user='root';
update mysql.user set Super_priv='y' where user='root';
update mysql.user set Create_tmp_table_priv='y' where user='root';
update mysql.user set Lock_tables_priv='y' where user='root';
update mysql.user set Execute_priv='y' where user='root';
update mysql.user set Repl_slave_priv='y' where user='root';
update mysql.user set Repl_client_priv='y' where user='root';
update mysql.user set Create_view_priv='y' where user='root';
update mysql.user set Show_view_priv='y' where user='root';
update mysql.user set Create_routine_priv='y' where user='root';
update mysql.user set Alter_routine_priv='y' where user='root';
update mysql.user set Create_user_priv='y' where user='root';

TextEdit.appを保存して終了します。

Mysqldサーバーを停止します。 これを行う方法は、MySQLで使用したインストールによって異なります。おそらくシステム設定にPreferencePaneがあります。そうでない場合は、MySQLのインストールに関するドキュメントを参照する必要があります。

Terminal.app(アプリケーション/ユーティリティ)を開き、次のコマンドを入力します。

Sudo mysqld --skip-grant-tables &  #start your MySQL server without access control
mysql -vv < ~/restore_root_privileges.sql
Sudo mysqladmin -p shutdown

通常どおり、MySQLサーバーを起動します。 PreferencePanesから。
Terminal.app:次を入力します。

mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
mysql> quit;

それで全部です。 保証なし何か間違っていると、データをすべて失う可能性があります。 最初にmysqlファイルをバックアップします。

次のようなものを得た場合:

-bash: mysql: command not found

つまり、インストールが正しくないため、mysqlバイナリがどこにあるかを見つけ、PATH変数にディレクトリを入力する必要があります。

11
jm666

私はちょうど同じことを得た-問題。 Windows 7でXammpを使用しています。phpmyadminでrootユーザーを誤って削除しました。

私はこのような簡単なルートで問題を解決できたようです:

XammpコントロールでApacheとmysqlを停止します

.../xammp/mysqlに移動します

ファイル「resetroot」が表示されます。このファイルを実行する

このアプリケーションが終了したら、mysqlとApacheを再起動します

Phpmyadminに移動すると、rootユーザーが復元されます

これで、すべてのデータベースに再びアクセスできるようになりました

6
Alex Val

マンプを使用して。別のユーザーを作成するときに、rootユーザーを削除するという明らかによくある間違いを犯しました。

だから私はこの投稿を見つけて指示に従おうとしたが...

私はこのエラーを取得していました:-bash:mysql:コマンドmysqlコマンドを実行しようとするとコマンドが見つかりませんでしたが、後でこのエラーを取得しましたrootユーザーに権限を付与し、シェルでmysqlを実行するとそのユーザーで何でもできます。

だから、ericとrolandoが投稿したコマンドを使用する前に(それをありがとう)、これは私がやったことです

Mysqldを適切に起動する必要があるため、以下を実行する必要がありました

  1. で見つかったmysqldプロセスを停止します

    ps aux | grep mysql

  1. で見つかったmysqlプロセスを停止しました

    kill -9 [pid]

  1. 次に、mysqlバイナリが存在する実際の場所からmysqldを適切に再起動する必要がありました。このコマンドは、パスワードを要求せずにmysldを起動します(セーフモードのようなもの)

/ Applications/MAMP/Library/bin/mysqld --skip-grant-tables --skip-networking&

My.cnfファイルで試しましたが、動作しませんでした。

  1. その後、シェルでmysqlに移動する必要がありました

/ Applications/MAMP/Library/bin/mysql -u root -p

(パスワードの入力を求められたら、Enterキーを押します)

  1. その後、ericコマンドとrolandoコマンドを実行しますが、今回はエラーが発生しませんでした

  2. 次に、mysqldサービスを停止します。

/ Applications/MAMP/Library/bin/mysqld stop

その後、GUIを使用して通常どおりにMampを再起動しました

そして以前と同じようにすべてが再び働き始めました...私はとても安心しました!!!

コンソールでの2時間のパニックと試行錯誤...学んだ貴重な教訓..

コマンドまたは説明のいずれかを台無しにした場合(これは、この投稿を書いているときに手順をたどっていたときに起こる可能性があります)お知らせください。投稿を更新させていただきます。

最後に与えないでください。できます!!

3

私は昨日まったく同じことをしました。MacとSQLサーバーは初めてです。新しいユーザーとパスワードを設定しようとしたときに、権限で間違ったボタンを押したため、誤ってルートユーザーを削除しました。

私はこのコンピューターで使用する仕事がなかったので、私のウェブサイトを削除することを心配しませんでした。

  • 最初にMAMP Proをアンインストールしました(Launchpadにアイコンがありました)。
  • 次に、アプリケーションフォルダーからMAMPディレクトリを削除しました。
  • その後、インターネットダウンロードからMAMPを再インストールしました。
  • 次に、すべてのCookie、キャッシュなどをサファリから削除しました。
  • コンピューターをシャットダウンして再起動しました。

MAMPが起動すると、スタートアップページのリンクからphpMyAdminにアクセスできるようになりました。

1
Eddie

私はこれをどのように解決したか貢献したかっただけです。 MAMP PROで誤ってrootユーザーを削除し、Time MachineバックアップでOSXを使用している場合。 Finderでこのフォルダーに移動するだけです。

/ライブラリ/ Application Support/appsolute /

次に、トップメニューバーから「タイムマシンを入力」し、MAMP PROフォルダーの最近のバックアップを復元します。私のために多くの面倒を保存しました。

1
user3349250

CentOS 6で私のために働いた。Create_tablespace_priv= 'y'を削除する必要があった。

0
Robert Jeffares

OK、MySQLの実行を停止し、付属のインストールファイルを開きます。 resetroot.batという名前のbatファイルが必要です。それを実行すると、問題はなくなります。

0
hands

MySQL 5.7では、パスワードフィールドがauthentication_string(mysql.userテーブル内)に置き換えられました。だからこれは私のために働いた。

INSERT INTO mysql.user 
SET user = 'root', 
Host = 'localhost', 
authentication_string =Password('Yours_own_password'), 
Select_priv = 'y',
Insert_priv = 'y',
Update_priv = 'y',
Delete_priv = 'y',
Create_priv = 'y',
Drop_priv = 'y',
Reload_priv = 'y',
Shutdown_priv = 'y',
Process_priv = 'y',
File_priv = 'y',
Grant_priv = 'y',
References_priv = 'y',
Index_priv = 'y',
Alter_priv = 'y',
Show_db_priv = 'y',
Super_priv = 'y',
Create_tmp_table_priv = 'y',
Lock_tables_priv = 'y',
Execute_priv = 'y',
Repl_slave_priv = 'y',
Repl_client_priv = 'y',
Create_view_priv = 'y',
Show_view_priv = 'y',
Create_routine_priv = 'y',
Alter_routine_priv = 'y',
Create_user_priv = 'y',
Event_priv = 'y',
Trigger_priv = 'y',
Create_tablespace_priv = 'y',
ssl_cipher = '',
x509_issuer = '',
x509_subject = '';
0