MariaDB - mysqld_safeコマンドを使用してrootユーザーのパスワードをリセットする方法
MariaDB - rootユーザーとしてログインできない場合の対処方法
原因
- パスワード設定の誤り
- 認証プラグインの設定
- 権限の問題
解決方法
MariaDBインストール時にrootユーザーのパスワードを設定していない場合は、デフォルトではパスワードが設定されていない状態です。
解決方法:
sudo mysql
コマンドでMariaDBにログインします。SET PASSWORD FOR root@localhost = PASSWORD('新しいパスワード');
コマンドを実行してパスワードを設定します。exit
またはquit
コマンドでMariaDBを終了します。mysql -u root -p
コマンドでrootユーザーとしてログインします。パスワードを聞かれたら、設定したパスワードを入力します。
MariaDB 10.2以降では、デフォルトの認証プラグインが caching_sha2_password
に変更されています。古いクライアントツールは mysql_native_password
プラグインしか対応していないため、ログインできない場合があります。
/etc/mysql/mariadb.conf.d/50-server.cnf
ファイルを開きます。default_authentication_plugin
の値をmysql_native_password
に変更します。- MariaDBを再起動します。
rootユーザーの権限が失われている場合も、ログインできない場合があります。
GRANT ALL PRIVILEGES ON *.* TO root@localhost WITH GRANT OPTION;
コマンドを実行して、rootユーザーにすべての権限を与えます。
その他の原因
上記以外にも、以下の原因でログインできない場合があります。
- MariaDBが起動していない
- ソケットファイルの場所が間違っている
- ネットワーク接続の問題
これらの原因については、エラーメッセージの内容などを参考に解決する必要があります。
注意事項
- 上記の解決方法は、あくまで一般的なものです。状況によっては異なる解決方法が必要になる場合があります。
- コマンドを実行する前に、必ずデータのバックアップを取るようにしてください。
- 不安な場合は、専門家に相談することをおすすめします。
補足
- MariaDBはMySQL互換のオープンソースデータベースです。
- rootユーザーはMariaDBサーバーの管理者権限を持つユーザーです。
sudo
コマンドは、一時的にroot権限を与えてコマンドを実行するコマンドです。
パスワード設定
SET PASSWORD FOR root@localhost = PASSWORD('新しいパスワード');
認証プラグインの設定
# /etc/mysql/mariadb.conf.d/50-server.cnf
default_authentication_plugin = mysql_native_password
権限の付与
GRANT ALL PRIVILEGES ON *.* TO root@localhost WITH GRANT OPTION;
補足
MariaDB - rootユーザーとしてログインできない場合のその他の方法
パスワードリセットファイルの使用
MariaDB 10.2以降では、パスワードリセットファイルを使用してrootユーザーのパスワードをリセットすることができます。
skip-grant-tables
の値を1
に変更します。
mysqld_safe
コマンドを使用して、rootユーザーのパスワードをリセットすることができます。
mysqld_safe --skip-grant-tables &
コマンドを実行して、MariaDBを起動します。killall mysqld
コマンドを実行して、MariaDBを停止します。
ブートストラップスクリプトの使用
MariaDBのインストールメディアに含まれているブートストラップスクリプトを使用して、rootユーザーのパスワードをリセットすることができます。
- MariaDBのインストールメディアを起動します。
- 画面の指示に従って、rootユーザーのパスワードをリセットします。
データベースの復元
rootユーザーのパスワードをリセットできない場合は、データベースのバックアップから復元することができます。
- データベースのバックアップファイルを復元します。
補足
- 上記はその他の方法であり、環境に合わせて変更する必要があります。
mysql mariadb