ERROR 1045 (28000):でMySQLにrootログインできない場合の対策

ERROR 1045 (28000):でMySQLにrootログインできない場合の対策 サーバー

サーバーにSSHで接続し、MySQLやMariaDBにrootでログインしようとしたら ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) というエラーが出てログインできない。

そんな時の対策方法です。

エラーの状況

# mysql -u root -p

と入力してEnterキーを押すと、

Enter password:

とパスワードを聞かれるのでパスワードを入力してEnter

すると以下のようなエラーが表示される。

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

※「mysql -u root -p」のあとにスペースを入れずにパスワードを入力してEnterキーを押します。
※上記の「XXXPASSWORDXXX」は例ですので実際のMySQL(又はMariaDB)のrootパスワードを入力してください。
# 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" を設定するとパスワード認証を無効化することが出来ます。

■ mysqldを停止
# systemctl stop mysqld
■ MYSQLD_OPTSでパスワード認証を無効化
# systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
■ mysqldを起動
# systemctl start mysqld

これでrootパスワード無しでログインできます。

# 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の設定を元に戻します。

■ mysqldを停止
# systemctl stop mysqld
■ MYSQLD_OPTSの設定を元に戻す
# systemctl set-environment MYSQLD_OPTS=""
■ mysqldを起動
# systemctl start mysqld

以上で解決です。

タイトルとURLをコピーしました