2014年10月16日木曜日

MySQL 5.7.5でsecure-authが軒並み使えなくなるはなし

みんなだいすき(?)、MySQL 4.0以前の古い16桁ハッシュで保存されたパスワードで認証するために必要な --secure-auth が5.7.5でついに非推奨になりました。
http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_secure-auth
が、「非推奨になったよ。そのうち消える。オプションはパースされるけど無視されるようになった!」というマニュアルの記載はアレで、実際はちょっと下に引用文っぽく書かれている「--secure-auth=0 や--skip-secure-auth を指定すると起動しません」の方が正しい。

mysqldのみならず同梱されているCLI類は全てそうなっています。

$ bin/mysqld --no-defaults --datadir=./data --skip-secure-auth
2014-10-16T06:05:04.604270Z 0 [Warning] The syntax '--secure-auth' is deprecated and will be removed in a future release
2014-10-16T06:05:04.604334Z 0 [ERROR] Unsupported value 0 for secure-auth
2014-10-16T06:05:04.604341Z 0 [ERROR] Aborting

2014-10-16T06:05:04.604357Z 0 [Note] Binlog end

$ bin/mysql --no-defaults --skip-secure-auth
WARNING: --secure-auth is deprecated and will be removed in a future version
bin/mysql  Ver 14.14 Distrib 5.7.5-m15, for linux-glibc2.5 (x86_64) using  EditLine wrapper
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.

Usage: bin/mysql [OPTIONS] [database]
..

$ bin/mysqldump --no-defaults --skip-secure-auth
WARNING: --secure-auth is deprecated and will be removed in a future version
mysqldump  Ver 10.13 Distrib 5.7.5-m15, for linux-glibc2.5 (x86_64)
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.

Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
..


このクライアントがダメになるやつ、ワーニング出したあとsecure-authの値が不正だってことを一切出力 *せずに* usageを表示して抜ける。これイヤだ。

$ grep -A4 -r 'if (!opt_secure_auth)' client/
client/mysqlimport.c:    if (!opt_secure_auth)
client/mysqlimport.c-    {
client/mysqlimport.c-      usage();
client/mysqlimport.c-      exit(1);
client/mysqlimport.c-    }
--
client/mysqladmin.cc:    if (!opt_secure_auth)
client/mysqladmin.cc-    {
client/mysqladmin.cc-      usage();
client/mysqladmin.cc-      exit(1);
client/mysqladmin.cc-    }
--
client/mysql.cc:    if (!opt_secure_auth)
client/mysql.cc-    {
client/mysql.cc-      usage(0);
client/mysql.cc-      exit(1);
client/mysql.cc-    }
--
client/check/mysqlcheck.cc:    if (!opt_secure_auth)
client/check/mysqlcheck.cc-    {
client/check/mysqlcheck.cc-      usage();
client/check/mysqlcheck.cc-      exit(1);
client/check/mysqlcheck.cc-    }
--
client/mysqlshow.c:    if (!opt_secure_auth)
client/mysqlshow.c-    {
client/mysqlshow.c-      usage();
client/mysqlshow.c-      exit(1);
client/mysqlshow.c-    }
--
client/mysqlbinlog.cc:    if (!opt_secure_auth)
client/mysqlbinlog.cc-    {
client/mysqlbinlog.cc-      usage();
client/mysqlbinlog.cc-      exit(1);
client/mysqlbinlog.cc-    }
--
client/mysqlslap.c:    if (!opt_secure_auth)
client/mysqlslap.c-    {
client/mysqlslap.c-      usage();
client/mysqlslap.c-      exit(1);
client/mysqlslap.c-    }
--
client/mysqldump.c:    if (!opt_secure_auth)
client/mysqldump.c-    {
client/mysqldump.c-      usage();
client/mysqldump.c-      exit(1);
client/mysqldump.c-    }


16桁ハッシュってそもそも何語? 対処は? っていうのはこちらあたりを。
昔っぽいMySQLにmysql2とかからつなぎにいくと怒られる件の対処 - Qiita
日々の覚書: MySQL5.6とMySQL5.0のレプリケーションでI/OスレッドがError: 2049


【2014/10/16 16:29】
old-passwords=1もダメになってますね。SHA256を使うold-passwords=2とかいうのも5.6で追加されてる。。(それ、そのオプション名でいいのか)

http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_old_passwords

0 件のコメント :

コメントを投稿