データベース · 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 newpassEnter 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パスワードを変更する
通常のユーザーパスワードを変更するには、次のように入力する必要があります:
mysqladmin -u user-name -p password newpassこの例の変数は:
- user-name: パスワードを変更したいユーザーのユーザー名。
- newpass: 新しいパスワード
‘password’という単語は変数ではないので、置き換えないでください。コマンドは古いパスワードを尋ねます。
方法2 - パスワードを更新または変更する
MySQLはユーザー名とパスワードをMySQLデータベース内のuserテーブルに保存します。次の方法を使用してパスワードを直接更新できます:
- MySQLサーバーにログインし、シェルプロンプトで次のコマンドを入力します:
mysql -u root -p- mysqlデータベースを使用します(mysql>プロンプトでコマンドを入力):
mysql> use mysql;- ユーザーのパスワードを変更します:
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");- 権限を再読み込みします:
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> quitMySQL 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新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。