こんにちは、yoku0825といいます。
rpmで突っ込むと、~/.mysql_secret にrootの初期パスワードが突っ込まれて、
SET PASSWORDで変更しないと有効にならない件…ではないように見えますので、
そこはクリアされてると思って進めますと、
my.cnfにold_passwordsが設定されている,
または rootのパスワードを設定した時に有効になっていませんでしたか?
これによりrootのパスワードが16桁ハッシュで作成されてしまったのではないかと思います。
secure-authは *サーバーと* *クライアントで* それぞれOFFにされる(skip-secure-authまたはsecure-auth=0)必要があるので、
my.cnfの[mysqld]セクションにskip-secure-authを追加してあげれば可能だと思います。
↓バージョンちょっと違いますが、再現させてみました。
bash-4.1# cat /root/.mysql_secret
# The random password set for the root user at Tue Dec 16 01:32:45 2014 (local time): NpWp_bz1tOSHMv1y
bash-4.1# mysql -uroot -pNpWp_bz1tOSHMv1y
mysql> SET PASSWORD = PASSWORD('hoge');
Query OK, 0 rows affected, 1 warning (0.00 sec)
-- ワーニングが出ませんでしたか? --
mysql> SHOW WARNINGS;
+---------+------+--------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------------------------------------------------------------------------+
| Warning | 1287 | 'pre-4.1 password hash' is deprecated and will be removed in a future release. Please use post-4.1 password hash instead |
+---------+------+--------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> SHOW GRANTS;
+---------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '13ae08e92ef36dd0' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> SELECT @@old_passwords;
+-----------------+
| @@old_passwords |
+-----------------+
| 1 |
+-----------------+
1 row in set (0.00 sec)
-- 16桁ハッシュで保存されています --
bash-4.1# mysql -uroot -phoge
Warning: Using a password on the command line interface can be insecure.
ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
-- クライアントが16桁ハッシュでの認証を拒否するので、Error 2049(2000番台はクライアントのエラーコードです)が出ます --
bash-4.1# mysql -uroot -phoge --skip-secure-auth
Warning: Using a password on the command line interface can be insecure.
ERROR 1275 (HY000): Server is running in --secure-auth mode, but 'root'@'localhost' has a password in the old format; please change the password to the new format
-- クライアントに16桁ハッシュを許可させても、サーバーが16桁ハッシュを拒否するのでError 1275(1000番台はサーバーのエラーコード)になりました --
# vim /usr/my.cnf
..
[mysqld]
old_passwords= 1
skip-secure-auth
..
bash-4.1# /etc/init.d/mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
-- サーバー側でもskip-secure-authにして再起動します --
bash-4.1# mysql -uroot -phoge
Warning: Using a password on the command line interface can be insecure.
ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
-- サーバー側でskip-しても、クライアント側で拒否するのでクライアントからskip-secure-authを外すと2049になります --
bash-4.1# mysql -uroot -phoge --skip-secure-auth
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2014, 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>
-- 両方のsecure-authがOFFになることで初めて16桁ハッシュで認証できました --
取り敢えず5.6.21ではこれでしのげるかも知れませんが、
5.7ではskip-secure-authは完全に解釈されなくなっているので
(5.6にもいつバックポートされるかされないかわかりませんし)
old_passwordsの設定を消して最初からセットアップするのが良いとは思います。
余談ですが、
> パスワードハッシュの管理に
> 変更が入ったこと、およびMySQL5.6から新しい管理方式が標準となったこと
> により発生している問題と理解した
パスワードハッシュが変わったのも、新しい方が標準になったのも10年以上前です :-P
解決しますように。
yoku0825,