サーバーにSSHで接続し、MySQLやMariaDBにrootでログインしようとしたら ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) というエラーが出てログインできない。
そんな時の対策方法です。
エラーの状況
1 |
# mysql -u root -p |
と入力してEnterキーを押すと、
1 |
Enter password: |
とパスワードを聞かれるのでパスワードを入力してEnter
すると以下のようなエラーが表示される。
1 |
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) |
MySQL(又はMariaDB)のrootのパスワードはちゃんと設定してあり、rootパスワードを確認して間違いなく入力したはずなのにエラーが出てログインできない。
対策方法その1
# mysql -u root -p
と入力してからEnterを押さずに、ワンライナー(1行)でパスワードを入力してみる。
【例】# mysql -u root -pXXXPASSWORDXXX
1 2 3 4 5 6 7 8 9 10 |
# mysql -u root -pXXXPASSWORDXXX Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 73916 Server version: 10.3.13-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> |
ちゃんとログイン出来ました。
対策方法その2
一旦、rootパスワード無しでMySQL(又はMariaDB)にrootログイン出来るように変更する方法です。
MySQLの起動オプションで、MYSQLD_OPTS="--skip-grant-tables" を設定するとパスワード認証を無効化することが出来ます。
1 2 3 4 5 6 |
■ mysqldを停止 # systemctl stop mysqld ■ MYSQLD_OPTSでパスワード認証を無効化 # systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" ■ mysqldを起動 # systemctl start mysqld |
これでrootパスワード無しでログインできます。
1 2 3 4 5 6 7 8 9 10 11 |
# mysql -u root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.3.13-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> quit Bye |
このままだとマズいので、MySQLでの作業が終わったらMYSQLD_OPTSの設定を元に戻します。
1 2 3 4 5 6 |
■ mysqldを停止 # systemctl stop mysqld ■ MYSQLD_OPTSの設定を元に戻す # systemctl set-environment MYSQLD_OPTS="" ■ mysqldを起動 # systemctl start mysqld |
以上で解決です。