GNU/Linux >> Linux の 問題 >  >> Linux

MySQLまたはMariaDBのrootパスワードを変更/リセットする方法

最近、自分のWebサイトのMySQLrootユーザーのパスワードを変更しました。次に、MySQLのルートパスワードを忘れたらどうなるか考えました。

MySQLまたはMariaDBのrootパスワードをリセットする簡単な方法はありますか?

私はいくつかのオンラインチュートリアルを調べましたが、パスワードの変更とパスワードのリセットを区別するのに十分なほど完全なものはないようです。ユーザーパスワードが格納されているMySQLテーブルとその列に関する詳細が不足しているように見えました。

このチュートリアルでは、次のトピックについて学習します。

  1. MySQL/MariaDBのrootパスワードを変更する方法
  2. 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パスワードを変更できないため、少し注意が必要です。


Linux
  1. ルートMySqlパスワードをリセットする方法

  2. MySQLまたはMariaDBのルートパスワードをリセットする方法

  3. ルートパスワードをリセットする方法MySQLサーバー

  1. CentOS6でMySQLルートパスワードをリセットする方法

  2. ルートパスワードを変更するにはどうすればよいですか?

  3. MySQLルートパスワードをリセットする

  1. ルートMySqlパスワードをリセットする方法

  2. MySQLルートパスワードをリセットする方法は?

  3. MySQLルートパスワードをリセットする方法