このチュートリアルでは、ユーザーがパスワードを忘れた場合にMySQLサーバーのルートパスワードをリセットまたは変更する手順を説明します。これは、MySQLサーバーを停止および開始するためのシステムへのアクセス権があることを前提としています。このチュートリアルは、 MySQL 8.0に固有のものです。 以上ですが、 MySQL 5.7を含む古いバージョンのMySQLではそのままで動作するはずです。 。ルートパスワードは、以下の2つの方法でリセットできます。
メモ :MySQLチュートリアル(UbuntuにMySQL 8をインストールする方法、UbuntuからMySQLを完全に削除する方法、MySQLを使用した基本的なSQLクエリを学ぶ方法)に従うこともできます。
パスワードの更新
MySQLのルートパスワードをすでに知っている場合は、簡単に更新できます。以下に示すコマンドを使用して実行できます。 ALTER コマンドはMySQL5.7 で動作するため、推奨されるコマンドです。 およびMySQL8 、ただし、どのコマンドにも従うことができます。
# Login to MySQL
mysql -uroot -p
# OR
mysql -u root -p
# MySQL - 5.7.5 and earlier
UPDATE mysql.user SET password=PASSWORD('password') WHERE user='root';
# MySQL - 5.7.6 and newer
UPDATE mysql.user SET authentication_string=PASSWORD("password") where user='root';
# OR
SET PASSWORD FOR 'root'@'localhost' = PASSWORD("password");
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';
# Flush
FLUSH PRIVILEGES;
# Disconnect
quit;
ルートパスワードを忘れた場合は、プロセスAのいずれかに従うことができます。 またはプロセスB 下記のとおり。
プロセスA-安全
このプロセスでは、MySQLサーバーを停止および起動して、initスクリプトを使用してルートパスワードを変更します。
ステップ1-サーバーを停止します
このプロセスの最初のステップとして、サーバーを停止する必要があります。以下に示すコマンドを使用して実行できます。
# Using init
sudo /etc/init.d/mysqld stop
# OR
sudo /etc/init.d/mysql stop
# Using service
sudo service mysql stop
# Using systemd
sudo systemctl stop mysqld.service
# OR
sudo systemctl stop mysql
ステップ2-初期化ファイルを作成する
次に、initファイルを作成し、以下に示すようにルートパスワードを更新するコマンドを追加します。
# Create Init File - Use your preferred editor
sudo nano <path to init file>init-file.txt
# Add the query to update password
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';
ステップ3-MySQLサーバーを起動します
次に、以下に示すように、initファイルを使用してMySQLサーバーを起動します。
# Start the serverへのパス
sudo mysqld --init-file=<path to init file>init-file.txt &
# OR
sudo mysqld_safe --init-file=<path to init file>init-file.txt &
サーバーのインストールによっては、多数のエラーがスローされる場合があります。
メッセージが表示されるとエラーが発生する場合があります-mysqld_safeDirectory'/ var / run /
# Stop the server
# Make directory
sudo mkdir -p /var/run/mysqld
# Change owner
sudo chown mysql:mysql /var/run/mysqld
# Start with init file
sudo mysqld_safe --init-file=<path to init file>init-file.txt &
「エラー2002(HY000):ソケットを介してローカルのMySQLサーバーに接続できません」というメッセージが表示される場合があります。 '/ var / run /
# Start MySQL Server normally - Ubuntu
sudo service mysql start
# Navigate to sock directory
cd /var/run
# Take backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Stop the server normally - Ubuntu
sudo service mysql stop
# Restore the sock
sudo mv ./mysqld.bak ./mysqld
# Start MySQL in unsafe mode
sudo mysqld_safe --skip-grant-tables &
ステップ4-MySQLサーバーを停止して起動します
次に、以下に示す通常のコマンドを使用してMySQLサーバーを停止および起動します。
# Using init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OR
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
# Using service
sudo service mysql stop
sudo service mysql start
# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql
必要に応じて、既存のプロセスを終了します。上記のコマンドがサーバーの停止と開始に機能しない場合にのみ使用してください。
# Find the processes
ps aux | grep mysqld
ps aux | grep mysql
# Kill the processes
sudo killall mysqld
sudo killall mysql
ステップ5-パスワードのテスト
最後に、以下に示すコマンドを使用して新しいパスワードをテストします。
# Test new password
mysql -u root -p
新しいパスワードをテストした後は、必ずinitファイルを削除してください。うまくいかない場合は、プロセスBに従うことができます 。
プロセスB-安全性が低い
このプロセスでは、ログインにパスワードを必要とせずにMySQLサーバーを停止してから起動します。
ステップ1-サーバーを停止します
このプロセスを完了するための最初のステップとして、現在実行中のMySQLサーバーを停止する必要があります。以下に示すコマンドを使用して実行できます。
# Using init
sudo /etc/init.d/mysqld stop
# OR
sudo /etc/init.d/mysql stop
# Using service
sudo service mysql stop
# Using systemd
sudo systemctl stop mysqld.service
# OR
sudo systemctl stop mysql
ステップ2-パスワードなしでMySQLを起動する
次に、以下に示すコマンドを使用して、パスワードを無効にしてMySQLサーバーを起動します。必ず
# Start without password
sudo mysqld_safe --skip-grant-tables &
メッセージが表示されるとエラーが発生する場合があります-mysqld_safeDirectory'/ var / run /
# Stop the server
# Make directory
sudo mkdir -p /var/run/mysqld
# Change owner
sudo chown mysql:mysql /var/run/mysqld
# Start without password
sudo mysqld_safe --skip-grant-tables &
「エラー2002(HY000):ソケットを介してローカルのMySQLサーバーに接続できません」というメッセージが表示される場合があります。 '/ var / run /
# Start MySQL Server
sudo service mysql start
# Navigate to sock directory
cd /var/run
# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Stop the server
sudo service mysql stop
# Restore the sock
sudo mv ./mysqld.bak ./mysqld
# Start MySQL in unsafe mode
sudo mysqld_safe --skip-grant-tables &
ステップ3-MySQLに接続する
次に、別のターミナルを開くか、別のシェルを介してサーバーに接続して、クライアントに接続します。
# Connect Directly
mysql
# Connect as Root
mysql -uroot
# OR
mysql -u root
ステップ4-パスワードを変更する
この手順では、以下に示すコマンドを使用してrootパスワードを変更します。 パスワードの更新のセクションを参照することもできます このチュートリアルの一部で、他のコマンドを使用してパスワードを変更します。
# Change Password
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';
# Flush
FLUSH PRIVILEGES;
# Disconnect
quit;
ステップ5-MySQLサーバーを停止して起動します
次に、以下に示す通常のコマンドを使用してMySQLサーバーを停止および起動します。
# Using init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OR
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
# Using service
sudo service mysql stop
sudo service mysql start
# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OR
sudo systemctl stop mysql
sudo systemctl start mysql
必要に応じて、既存のプロセスを終了します。上記のコマンドがサーバーの停止と開始に機能しない場合にのみ使用してください。
# Find the processes
ps aux | grep mysqld
ps aux | grep mysql
# Kill the processes
sudo killall mysqld
sudo killall mysql
ステップ6-パスワードのテスト
最後に、以下に示すコマンドを使用して新しいパスワードをテストします。
# Test new password
mysql -u root -p
概要
これは、パスワードを忘れた場合に、rootユーザーまたは他のユーザーのパスワードをリセットまたは変更する方法です。