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

LinuxでMySQLルートユーザーパスワードをリセットする方法

MySQLのrootユーザーのパスワードを忘れましたか?心配ない!このガイドでは、LinuxオペレーティングシステムでMySQLrootユーザーのパスワードをリセットする手順について説明します。以下の手順は、MariaDBのrootパスワードをリセットする場合にも機能するはずです。

MySQLでroot(管理)ユーザーパスワードをリセットするガイドをすでに投稿しています。 古いバージョン、つまりMySQL5.7。しかし、その方法は新しいMySQL8バージョンでは機能しませんでした。 MySQL 8でrootパスワードをリセットする場合は、以下の2つの回避策のいずれかに従ってください。

LinuxでMySQLルートユーザーパスワードをリセット

すでに述べたように、MySQLのルートパスワードは2つの方法でリセットできます。

  • 一般的な方法
  • init_fileを使用する システム変数。

1。 MySQLルートパスワードをリセットする一般的な方法

この方法は、使用しているオペレーティングシステムに関係なく機能します。 安全性が低いことを警告します --skip-grant-tablesを使用してMySQLサーバーを起動するためです。 オプション。これにより、サーバーにアクセスできるすべてのユーザーにすべてのデータベースへの無制限のアクセスが提供されます。 。

まず、コマンドを使用してMySQLサービスを停止します:

$ sudo systemctl stop mysql

MySQLが実際に停止しているかどうかは次のコマンドで確認できます:

$ sudo systemctl status mysql

出力例:

● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Sat 2021-05-29 11:53:08 UTC; 8s ago
     Process: 560 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
     Process: 666 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)
    Main PID: 666 (code=exited, status=0/SUCCESS)
      Status: "Server shutdown complete"
 May 29 10:08:33 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server…
 May 29 10:08:37 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server.
 May 29 11:53:07 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server…
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded.
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.

さて、MySQLサービスは実行されていません。

次に、次のコマンドを実行して、許可を確認せずにMySQLサーバーを再起動します。

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

ここでは、 --skip-grant-tables オプションを使用すると、パスワードなしですべての権限を使用してmysqlデータベースサーバーに接続できます。 --skip-networking オプションは、他のクライアントがデータベースサーバーに接続できないようにするために使用されます。そして、アンパサンド& 記号はコマンドをバックグラウンドで実行するために使用されるため、後続の手順で指定されている他のコマンドを入力できます。上記のコマンドは危険であり、データベースサーバーが安全でなくなり、セキュリティの脅威に対して脆弱になることに注意してください。 このコマンドは短時間だけ実行する必要があります パスワードをリセットします。

次のエラーが表示される場合があります:

2021-05-29T12:00:19.991826Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2021-05-29T12:00:19.996942Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

このエラーが表示された場合は、不足しているディレクトリ(/var/run/mysqldなど)を作成します )そして、以下のように適切な権限を設定します。

$ sudo mkdir -p /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld

ここで、パスワードなしでroot権限を使用してmysqlサーバーを再起動してみてください:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

次に、次のコマンドを使用してmysqlサーバーに接続します。

$ mysql

mysqlシェルプロンプトが表示されます。

 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 7
 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

 Copyright (c) 2000, 2021, Oracle and/or its affiliates.

 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

付与テーブルを読み込まずにログインしたため(--skip-grant-tablesを使用したため) オプション)、ALTER USERを使用することはできません パスワードをリセットするコマンド。それでは、コマンドを使用して付与テーブルをロードしましょう:

mysql> FLUSH PRIVILEGES;

次に、次のコマンドを実行してmysqlrootユーザーのパスワードを更新します。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

上記のコマンドで、[email protected]#@!を置き換えます 自分のパスワードで。 Validate Passwordを有効にしている場合は注意してください コンポーネントの場合、強力なパスワードを使用する必要があります。

最後に、mysqlプロンプトを終了します:

mysql> exit

最後に、 --skip-grant-tablesを使用して以前に起動した実行中のデータベースサーバーをシャットダウンします。 オプション。これを行うには、次を実行します:

$ sudo mysqladmin -u root -p shutdown

sudoを入力するように求められます パスワードの後に​​MySQLのroot 前の手順で設定したユーザーパスワード。

[sudo] password for ostechnix: 
Enter password: 
2021-05-29T12:09:38.425737Z mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu2004.localdomain.pid ended
[1]+  Done                    sudo mysqld_safe --skip-grant-tables --skip-networking

上記のコマンドが機能しない場合は、.pid fileを見つけてください サーバーのプロセスIDが含まれています。 PIDファイルは通常、 /var/lib/mysql/で入手できます。 または/var/run/mysqld/ または/usr/local/mysql/data/ ディストリビューション、ホスト名、および構成に応じたディレクトリ。通常、ファイル名の拡張子は.pidで、mysqldで始まります。 またはシステムのホスト名。

私の場合、それは "/var/lib/mysql/ubuntuserver.pid"

そこで、次のコマンドでデータベースサーバーのインスタンスを停止しました:

$ sudo kill `/var/lib/mysql/ubuntuserver.pid`

バックティックを使用してください ファイルパスについて言及します。

psを使用してMySQLpidを見つけることもできます およびgrep 以下のようなコマンド:

$ ps ax | grep mysql

出力例:

1930 pts/0 S 0:00 sudo mysqld_safe --skip-grant-tables --skip-networking
1931 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
2091 pts/0 Sl 0:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/var/log/mysql/error.log --pid-file=ubuntuserver.pid

以下のように手動で強制終了します:

$ sudo kill <PID>

または、すべてのMySQLサービスを強制終了します:

$ sudo  killall mysql

次に、コマンドを使用して通常どおりMySQLサービスを開始します。

$ sudo systemctl start mysql

次に、新しいパスワードを使用してMySQLサーバーにログインします。

$ mysql -u root -p

出力例:

2。 MySQLルートパスワードをパスワードファイルでリセットする

mysqlルートパスワードをリセットする別の方法は、 init_fileを使用することです。 システム変数。

MySQLサービスを停止します:

$ sudo systemctl stop mysql

ostechnix.txtなどのテキストファイルを作成します :

$ vi ostechnix.txt

その中に次の行を追加します:

ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

[email protected]#@!を置き換えます 上記の行に自分のパスワードを入力します。 Validate Passwordを有効にしている場合 プラグインの場合、強力なパスワードを指定する必要があります。ファイルを保存して閉じます。

次に、init_fileを使用してMySQLサーバーを起動します。 ostechnix.txtを指すシステム変数 ファイル:

$ sudo mysqld --init-file=/home/sk/ostechnix.txt &

このコマンドは、ostechnix.txtの内容を実行します ファイルを作成して[email protected]を更新します ostechnix.txtに記載されている新しいパスワードを使用したアカウントパスワード ファイルを作成し、最後にmysqlサーバーを起動します。

次に、mysqlサーバーを通常どおり停止して再起動します。

$ sudo systemctl stop mysql
$ sudo systemctl start mysql

最後に、パスワードファイル(ostechnix.txt)を削除します 。

$ rm /home/sk/ostechnix.txt

これで、次のコマンドを使用して、新しいパスワードでmysqlサーバーにログインできるようになります。

$ mysql -u root -p

また、MySQLルートパスワードをリセットするためのわずかに異なる方法を投稿しました。詳細については、次のガイドを確認してください。

>> How To Reset Root Password In MySQL 8 On Ubuntu Linux

結論

このガイドでは、Linuxオペレーティングシステムで忘れたMySQLrootユーザーパスワードをリセットする2つの異なる方法を学びました。データベース管理者アカウントのユーザーパスワードを紛失した場合は、数分で簡単にリセットできます。


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

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

  3. Rocky Linuxでルートパスワードをリセットする-その方法は?

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

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

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

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

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

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