web-dev-qa-db-ja.com

mysqlのルートパスワードを変更する方法

Redhat LinuxにMySQLサーバー5をインストールしました。 rootとしてログインできないため、rootパスワードを変更できません。

mysql -u root -p  
Enter password:  <blank>
ERROR 1045 (28000): Access denied for user 'root'@'localhost'
(using password: NO)

このようなものを設定しようとすると:

mysqladmin -u root password 'newpass'

エラーが発生します:

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' 
(using password: NO)'

ルートパスワードが設定されているかのように。

また、( here で説明されている)を使用してパスワードをリセットしようとしました

/sbin/service mysqld start --skip-grant-tables

そして次に:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')     
->  WHERE User='root';  
ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user'

(yumを使用して)mysql-serverをアンインストールしてから再インストールしましたが、それは役に立ちませんでした。

ルートパスワードを強制的にリセットするにはどうすればよいですか?

24
yossi

MySQLのインストールを削除し、データファイルを削除してから再インストールしました。

その後、ルートパスワードを設定することができました。 rootパスワードを何かに設定したら。 mysqladminでは、知らない場合はリセットできません。

リセットするには、mysqldの実行方法の所有権を取得し、initパスワードを入力してルートパスワードを変更する必要があります。 https://dev.mysql.com/doc/refman/5.0/en /resetting-permissions.html

4
yossi

1つのオプションは、UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';をファイルに保存し、--init-file=FILENAMEmysqldを手動で開始することです。サーバーが起動すると、パスワードがリセットされ、ログインできるようになります。その後、サーバーをシャットダウンして通常どおり起動する必要があります。

10
Michael Mior

デフォルトでは、rootユーザーのパスワードは空の文字列です。

そして(using password: NO)は、パスワードがないことを示しています。

別のシステムからログインしようとしていますか?ローカルユーザーとしてのみrootユーザーとしてログインできると思います。

5
danijar

ゲームに少し遅れましたが、Raspberry Piのインストールでも同じ問題があり、昇格が必要であることがわかりました。パスワード変更の先頭にSudoを追加すると、機能するようになりました。

Sudo mysqladmin -u root password 'newpass'

その後、昇格されたSQLアクセス

Sudo mysql -u root -p  

どちらかがSudoとして実行されていない場合、失敗します。

5

これは、MySQL Server 5.6を搭載したWindowsで役立ちました。 mysqldパスを変更して、MySql Serverをインストールした場所を指すようにしてください。私にとっては"C:\Program Files\mysql\MySQL Server 5.6\bin\mysqld.exe"

  1. システムに管理者としてログオンします。

  2. MySQLサーバーが実行されている場合は停止します。 Windowsサービスとして実行されているサーバーの場合は、サービスマネージャーに移動します。[スタート]メニューから、[コントロールパネル]、[管理ツール]、[サービス]の順に選択します。リストでMySQLサービスを見つけて停止します。

    サーバーがサービスとして実行されていない場合は、タスクマネージャーを使用して強制的に停止する必要があります。

  3. 次のステートメントを含むテキストファイルを作成します。パスワードを使用するパスワードに置き換えます。

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;
    

    UPDATEおよびFLUSHステートメントをそれぞれ1行で記述します。 UPDATEステートメントは、すべてのルートアカウントのパスワードをリセットし、FLUSHステートメントは、パスワードの変更を通知するために、許可テーブルをメモリに再ロードするようにサーバーに指示します。

  4. ファイルを保存します。この例では、ファイルの名前はC:\mysql-init.txt

  5. コンソールウィンドウを開いて、コマンドプロンプトを表示します。[スタート]メニューから[ファイル名を指定して実行]を選択し、実行するコマンドとしてcmdと入力します。

  6. 特別な--init-fileオプションを使用してMySQLサーバーを起動します(オプション値のバックスラッシュが2倍になっていることに注意してください)。

    C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt
    

    MySQLをC:\ mysql以外の場所にインストールした場合、それに応じてコマンドを調整します。

    サーバーは、起動時に--init-fileオプションで指定されたファイルの内容を実行し、各ルートアカウントのパスワードを変更します。

    サーバー出力をログファイルではなくコンソールウィンドウに表示する場合は、コマンドに--consoleオプションを追加することもできます。

    MySQLインストールウィザードを使用してMySQLをインストールした場合、-defaults-fileオプションを指定する必要がある場合があります。

    C:\> "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe"
         --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini"
         --init-file=C:\\mysql-init.txt
    

    適切な--defaults-file設定は、サービスマネージャーを使用して見つけることができます。[スタート]メニューから、[コントロールパネル]、[管理ツール]、[サービス]の順に選択します。リストでMySQLサービスを見つけて右クリックし、[プロパティ]オプションを選択します。 [実行可能ファイルへのパス]フィールドには--defaults-file設定が含まれています。

  7. サーバーが正常に起動したら、C:\ mysql-init.txtを削除します。

http://docs.Oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html

2
Alex W

おそらくここで少し遅れますが、ここに私がやったことがあります:

以下を含むファイルresetpass.shを作成します。

UPDATE mysql.user SET Password=PASSWORD('newpassword') WHERE User='root';

# mysqld_safe --init-file=resetpass.sh

# service mysqld start --skip-grant-tables

# mysql -u root -p

パスを入力してください

mysql >  change root pass ; flush privs; 

終了する

# restart mysql service 

私が使用していたMySQLバージョンは、centos6で5.1.73でした

2
A.Dhond

コマンドから-pを削除します。 -pは、パスワードのプロンプトを強制します。

つかいます : mysql -u root

これで問題が解決します。

2
mangaldev

これを試してください:

mysql -u root

その後:

mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
    ->                   WHERE User='root'; 

mysql> FLUSH PRIVILEGES;

私のためにうまくいきました!

1
Marcelo

文書によると、MySQL 5.7では一時パスワードが/var/log/mysqld、しかし、これは明らかに5.6の場合ではありません。

MySQLバージョン5.6をRHEL 6.7にインストールすると、インストール中に設定された一時的なルートパスワードがファイル/root/.mysql_secret

0
Wildcard