はじめに
MySQLルートパスワードを使用すると、ルートユーザーはMysqlデータベースに完全にアクセスできます。最近は多くのパスワードが必要なため、パスワードに苦労することがあります。MySQLデータベースのルートパスワードを忘れたり紛失したりした場合でも、アクセスを取得できます。サーバーとsudo対応のユーザーアカウントにアクセスできる場合は、パスワードをリセットしてください。
この記事では、MySQLの古いバージョンと新しいバージョンのrootパスワードをリセットする方法について説明します。
前提条件
ルートMySQLパスワードを回復するには、次のものが必要です。
- sudoユーザーによるMySQLを実行しているLinuxサーバーへのアクセス
ステップ1:データベースバージョンの識別
以下のコマンドでデータベースのバージョンを特定します。ルートパスワードを回復するには別のコマンドを使用する必要があるため、後で使用するため、実行しているデータベースのバージョンをメモしてください。
mysql --version
MySQLでは次のような出力が表示されます:
MySQL outputmysql Ver 14.14 Distrib 5.7.16、Linux(x86_64)用、EditLineラッパーを使用
ステップ2:Mysqlサーバーを停止する
ルートパスワードを変更する前に、Mysqlサービスを停止する必要があります
UbuntuとDebianの場合次のコマンドを実行します:
sudo service mysql stop
CentOS、Fedora、およびRed HatEnterpriseLinuxでは次のコマンドを実行します。
sudo service mysqld stop
Mysqlサーバーが停止したら、手動でアクセスしてルートパスワードをリセットします。
ステップ3:root権限でデータベースにアクセスする
ユーザー権限に関する情報をロードせずにMySQLを実行すると、パスワードを指定せずにroot権限でデータベースのコマンドラインにアクセスできるようになります。これにより、知らないうちにデータベースにアクセスできるようになります。
付与テーブルをロードせずにデータベースを起動し、最後にアンパサンド記号を追加してください。
sudo mysqld_safe --skip-grant-tables &
これで、rootユーザーとしてデータベースに接続できます。rootユーザーはパスワードを要求する必要はありません。
mysql -u root
代わりに、データベースシェルプロンプトが表示されます。
ヘルプが表示される場合は、「help;」または「\h」と入力します。 「\c」と入力して、現在の入力ステートメントをクリアします。
mysql>
ステップ4:新しいMysqlルートパスワードを設定します
Mysqlルートパスワードを変更するには、Mysqlデータベースのupdateuserコマンドを変更します
use mysql;
update user set authentication_string=PASSWORD("mynewpassword") where User='root';
flush privileges;
quit
注:MySQL 5.7以降では、mysql.userテーブルフィールドのパスワードフィールドが削除され、フィールド名は「authentication_string」になりました。上記の代わりに以下のupdateコマンドを使用してください。
update user set authentication_string=PASSWORD("mynewpassword") where User='root';
注:必ず mynewpasswordを置き換えてください 選択した新しいパスワードを使用します。
コマンドを実行すると、コマンドが正常に実行されたことを確認する必要があります。
出力
クエリOK、影響を受ける行は0(0.00秒)
ステップ5:Mysqlサービスを停止して開始します
パスワードを更新したら、Mysqlサービスを再起動する必要があります
UbuntuとDebianの場合次のコマンドを実行します:
sudo service mysql stop sudo service mysql start
CentOS、Fedora、およびRed HatEnterpriseLinuxでは次のコマンドを実行します。
sudo service mysqld stop sudo service mysqld start
ステップ6:データベースにログインします
新しいパスワードでデータベースにログインしてみてください。プロンプトが表示されたら新しいパスワードを入力してください。
mysql -u root -p
結論
これで、MySQLへの管理アクセスが可能になります。選択する新しいルートパスワードが強力で安全であることを確認してください。もう一度忘れないように注意してください:)