データベース · 2 min read · Feb 13, 2026

MySQLおよびMariaDBのルートパスワードの設定、変更、リセット

このチュートリアルでは、MySQLまたはMariaDBのルートパスワードを設定、変更、リセットする方法を説明します(パスワードを忘れた場合)。何度も、mysqladmin: ‘localhost’でサーバーに接続できませんでしたというエラーや、’Access denied for user ‘root’@’localhost’ (using password: YES)’という問題を見かけます。そこで、MySQL関連のパスワードの問題を解決する方法を思い出させる時が来たと思いました。MySQLのルートパスワードをリセットする方法をすぐに知りたい場合は、このチュートリアルの最後にあります。このチュートリアルは、CentOS、Debian、Fedora、Ubuntuなど、すべての主要なLinuxディストリビューションに対応しています。

mysqladminコマンドを使用してルートパスワードを変更する

方法1 - 初めてルートパスワードを設定する

MySQLのルートパスワードを設定したことがない場合、サーバーはルートとして接続するためにパスワードを必要としません。初めてルートパスワードを設定するには、シェルプロンプトで以下のようにmysqladminコマンドを使用します:

mysqladmin -u root password newpass

ルートパスワードを新しいパスワード’ newpass ‘に変更(または更新)したい場合は、次のコマンドを使用する必要があります:

mysqladmin -u root -p password newpass
Enter password:

もし…

mysqladmin: connect to server at 'localhost' failed  
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

その場合は、MySQLパスワードを回復する方法について以下の指示に従ってください。

上記の例の’ password ‘という単語はコマンドの一部ですので、自分のパスワードに置き換えないでください。’ newpass ‘という単語が新しいパスワードです。

MySQLまたはMariaDBのルートパスワードを初めて設定する際にmysqladminコマンドの代わりに使用できるのは、mysql_secure_installationコマンドです。このコマンドは、古いMySQLルートパスワードと新しいMySQLルートパスワードを尋ねるだけでなく、テストデータベースを無効にするなどの他のセキュリティ設定も行います。

このコマンドの使い方は次のとおりです:

mysql_secure_installation

以下のように質問に答えてください:

Change the root password? [Y/n] <-- y  
New password: <-- Enter a new MySQL root password  
Re-enter new password: <-- Repeat the MySQL root password  
Remove anonymous users? [Y/n] <-- y  
Disallow root login remotely? [Y/n] <-- y  
Remove test database and access to it? [Y/n] <-- y  
Reload privilege tables now? [Y/n] <-- y 

上記の回答は推奨事項であり、テストデータベースを保持したり、ルートユーザーにリモートアクセスを必要とする場合など、他の設定を選択する自由があります。注意:PHPMyAdminをリモートで使用するためにリモートアクセスは必要ありません。

mysql_secure_installationを使用してMySQLルートパスワードを変更する

他のユーザーのMySQLパスワードを変更する

通常のユーザーパスワードを変更するには、次のように入力する必要があります:

mysqladmin -u user-name -p password newpass

この例の変数は:

  • user-name: パスワードを変更したいユーザーのユーザー名。
  • newpass: 新しいパスワード

‘password’という単語は変数ではないので、置き換えないでください。コマンドは古いパスワードを尋ねます。

方法2 - パスワードを更新または変更する

MySQLはユーザー名とパスワードをMySQLデータベース内のuserテーブルに保存します。次の方法を使用してパスワードを直接更新できます:

  1. MySQLサーバーにログインし、シェルプロンプトで次のコマンドを入力します:
mysql -u root -p
  1. mysqlデータベースを使用します(mysql>プロンプトでコマンドを入力):
mysql> use mysql;
  1. ユーザーのパスワードを変更します:

MySQL 5.7.5以前

mysql> update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

MySQL 5.7.6以降

mysql> SET PASSWORD FOR 'ENTER-USER-NAME-HERE'@'localhost' = PASSWORD("newpass");
  1. 権限を再読み込みします:
mysql> flush privileges;  
mysql> quit

この方法は、PHPまたはPerlスクリプトを使用する際に必要です。

失われたMySQLルートパスワードを回復する

次の5つの簡単なステップでMySQLデータベースサーバーのパスワードを回復できます:

ステップ1: MySQLサーバープロセスを停止します。

ステップ2: –skip-grant-tablesオプションを使用してMySQL(mysqld)サーバー/デーモンプロセスを開始し、パスワードを要求しないようにします。

ステップ3: ルートユーザーとしてMySQLサーバーに接続します。

ステップ4: 新しいルートパスワードを設定します。

ステップ5: 終了し、MySQLサーバーを再起動します。

各ステップで入力する必要があるコマンドは次のとおりです(ルートユーザーとしてログイン):

ステップ1: MySQLサービスを停止します:

service mysql stop

出力:

Stopping MySQL database server: mysqld.

ステップ2: パスワードなしでMySQLサーバーを開始します:

mysqld_safe --skip-grant-tables &

出力:

[1] 5988  
Starting mysqld daemon with databases from /var/lib/mysql  
mysqld_safe[6025]: started

ステップ3: MySQLクライアントを使用してMySQLサーバーに接続します:

mysql -u root

出力:

Welcome to the MySQL monitor. Commands end with ; or \g.  
Your MySQL connection id is 56299  
Server version: 5.6.34-1 (Debian)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
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.

mysql>

ステップ4: 新しいMySQLルートユーザーパスワードを設定します:

MySQL 5.7.5以前

mysql> use mysql;  
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';  
mysql> flush privileges;  
mysql> quit

MySQL 5.7.6以降

mysql> use mysql;  
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("newpass");  
mysql> flush privileges;  
mysql> quit  

ステップ5: MySQLサーバーを停止します:

service mysql stop

出力:

Stopping MySQL database server: mysqld  
STOPPING server from pid file /var/run/mysqld/mysqld.pid  
mysqld_safe[6186]: ended  
  
[1]+  Done                mysqld_safe --skip-grant-tables

または、上記のコマンドが停止しない場合は、このコマンドを使用してMySQLを停止します(どのコマンドが機能するかはMySQLのバージョンによります):

killall mysqld

出力はLinuxディストリビューションによって異なる場合があります。エラーが報告されない限り心配しないでください。MySQLサーバーを起動し、テストします:

service mysql start  
mysql -u root -p
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。