最近、自分のWebサイトのMySQLrootユーザーのパスワードを変更しました。次に、MySQLのルートパスワードを忘れたらどうなるか考えました。
MySQLまたはMariaDBのrootパスワードをリセットする簡単な方法はありますか?
私はいくつかのオンラインチュートリアルを調べましたが、パスワードの変更とパスワードのリセットを区別するのに十分なほど完全なものはないようです。ユーザーパスワードが格納されているMySQLテーブルとその列に関する詳細が不足しているように見えました。
このチュートリアルでは、次のトピックについて学習します。
- MySQL/MariaDBのrootパスワードを変更する方法
- MySQL/MariaDBのrootパスワードをリセットする方法
私はそれを可能な限り完全にするように努めます、そしてうまくいけば、これを読んだ後、あなたはそれ以上の助けを必要とせずにこのタスクを簡単にやり遂げることができます。
パスワードの変更とリセットの違いは何ですか?
rootパスワードがわかっている場合は、rootユーザーとしてデータベースに接続し、パスワードを非常に簡単に変更できます。 rootパスワードとその他のユーザーパスワードを変更できます。
rootパスワードを忘れた場合は、rootユーザーとしてMySQLサーバーに接続できないことを意味します。 rootユーザーには最高の権限があり、他のアカウントからパスワードを変更することはできません。この場合、MySQLルートパスワードをリセットするには、いくつかの追加手順を実行する必要があります。
MySQLとMariaDBの手順は同じですか?
MariaDBはMySQLの上に構築されています。これは、Webホスティング要件で非常に人気があります。実際、JournalDevと私のすべてのWebサイトはMariaDBデータベースを使用しています。 MySQLで機能するコマンドはすべて、MariaDBでも機能します。
コマンドを調整する必要があるのは、MySQLサーバーを停止して起動することだけです。このチュートリアルではUbuntuを使用しており、systemctl
を使用しています。 サービスを開始/停止します。 /etc/init.d/mysql
を使用することもできます 同じ操作を実行します。
Windows OSを使用している場合は、 mysqldを使用してください。 またはmysqladmin コマンドプロンプトからMySQLサーバーを起動または停止します。これらはMySQLインストールbinフォルダにあります。
MySQLまたはMariaDBのrootパスワードを変更する方法
MariaDBデータベースを使用しています。–versionオプションを使用してそのバージョンを確認できます。
# mariadb --version mariadb Ver 15.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 #
1。 rootユーザーとしてMySQLに接続します
# mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
2。 mysql.userテーブルのパスワードとauthentication_string値を変更します
MySQLユーザーのパスワードは、暗号化された形式でmysql.userテーブルのpassword列とauthentication_string列に格納されます。 PASSWORD()関数を使用して、プレーンテキストの文字列を暗号化された値に変換し、これらの列を設定できます。
MariaDB [(none)]> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost'; +-------------------------------------------+-------------------------------------------+ | password | authentication_string | +-------------------------------------------+-------------------------------------------+ | *E510A8BC6807F8BF4913D893620792C432FCBA5B | *E510A8BC6807F8BF4913D893620792C432FCBA5B | +-------------------------------------------+-------------------------------------------+ 1 row in set (0.00 sec) MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost'; +-------------------------------------------+-------------------------------------------+ | password | authentication_string | +-------------------------------------------+-------------------------------------------+ | *6F168491676C70E51CB8D0F14D6B581D1322A77A | *6F168491676C70E51CB8D0F14D6B581D1322A77A | +-------------------------------------------+-------------------------------------------+ 1 row in set (0.00 sec) MariaDB [mysql]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) MariaDB [mysql]> exit Bye root@localhost:~#
上記のクエリで何が起こっているのかを理解しましょう。
- まず、データベースを「mysql」に変更します
- 次に、「root」@「localhost」ユーザーの「authentication_string」列と「password」列の値を新しいパスワードで設定します。
- 次に、FLUSHPRIVILEGESコマンドを使用して許可テーブルを再ロードします。
- 次に、MySQLセッションを終了します。ルートパスワードは正常に変更されました。
注 :ALTER USER
を使おうとしました ルートパスワードを変更するコマンドが機能しませんでした。
MariaDB [mysql]> ALTER USER root@localhost IDENTIFIED BY 'qwerty2022'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER root@localhost IDENTIFIED BY 'qwerty2022'' at line 1 MariaDB [mysql]>
3。新しいパスワードを使用してrootユーザーのログインを確認します
# mysql -uroot -pqwerty2021 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 11 Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
それでおしまい。 MySQL/MariaDBユーザーパスワードを正常に変更しました。
MySQL/MariaDBのrootパスワードをリセットする方法
ルートパスワードを忘れた場合は、パスワードを入力せずにMySQLターミナルにログインできるように、追加の手順を1つ実行する必要があります。
1。 MySQLサーバーを停止します
# systemctl stop mysql
systemctl stop mariadb
を実行することもできます 、効果は同じになります。
2。権限チェック設定なしでMySQLサーバーを起動する
アイデアは、付与テーブル情報をロードせずにMySQLサーバーを起動して、パスワードを入力せずにrootユーザーとしてログインできるようにすることです。
このようにMySQLサーバーを実行することはセキュリティ上のリスクがあるため、簡単に実行し、rootパスワードをリセットした直後にシャットダウンする必要があります。
MySQLサーバーをセーフモードで起動し、 –skip-grant-tablesを渡すことができます ユーザー権限設定を保存する付与テーブルの読み込みをスキップするオプション。
# sudo mysqld_safe --skip-grant-tables --skip-networking & [1] 11734 root@localhost:~# 200427 20:05:40 mysqld_safe Logging to syslog. 200427 20:05:40 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql #
バックグラウンドで実行されるように、&で終わるコマンドを実行することが重要です。 –skip-networkingも通過しています 他のクライアントがMySQLサーバーに接続できないようにするネットワークをスキップするオプション。
3。パスワードを渡さずにrootとしてMySQLサーバーに接続する
# mysql -u root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
ルートパスワードを提供していませんが、MySQLサーバーに接続できることに注意してください。
4。 mysql.userテーブルのrootパスワードをリセットします
MariaDB [(none)]> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [mysql]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) MariaDB [mysql]> exit Bye #
5。 MySQLサーバーを停止して開始します
まず、実行中のMySQLサーバーを強制終了します。 PIDは/var/run/mysqld/mysqld.pid
にあります ファイル。
# cat /var/run/mysqld/mysqld.pid 11891 # sudo kill 11891 #
次に、MySQLサーバーを通常モードで起動します。
# systemctl start mysql
6。新しいパスワードを使用してrootユーザーとしてログインして確認します
# mysql -uroot -pqwerty2022 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5 Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
パスワードなしでrootとしてログインしようとすると、「アクセスが拒否されました」というエラーがスローされます。
# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # mysql -uroot ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) #
結論
MySQLのrootユーザーは、他のユーザーとまったく同じです。ただし、パスワードの変更またはリセットは、スーパーユーザーであり、別のユーザーのログインからrootパスワードを変更できないため、少し注意が必要です。