MySQL 5.1→5.6のmy.cnfの差分とか
MySQL 5.1で使ってたmy.cnfを試しに5.6で動くようにしたときの差分す。網羅的には調べてないんで他にも廃止になったパラメータはあるかもです。あくまで参考までに。
# log-binにパラメータ指定しないと怒られます -log-bin +log-bin = mysqld-bin # old-passwordsはオン、オフだけじゃなくて引数(0, 1, 2)が必須になって、引数の値によって挙動がかわります。 -old-passwords +old-passwords = 1 # これ指定しないと、リモートからのpre-4.1な認証方法で接続できないです +skip-secure-auth # これ指定しないと、pre-4.1な認証方法で接続できないです★下に追記あり +default-authentication-plugin = mysql_old_password # パラメータ名変更 -table_cache = 8192 +table_open_cache = 8192 # パラメータ廃止 -innodb_additional_mem_pool_size = 10M +#innodb_additional_mem_pool_size = 10M # 5.6からinnodb_file_per_tableがデフォルトで有効になったので、元の挙動にするには0を明示 +innodb_file_per_table = 0 # 5.6から挙動が変わったパラメータ。物理ファイルをコピーしたときは元の挙動をするように指定しないといけないかも。未検証 +#innodb_checksum_algorithm = INNODB +#binlog_checksum = NONE # パラメータ名変更 -default-table-type = InnoDB +default-storage-engine = InnoDB # innodb-pluginが組み込みのデフォルトになったのでプラグインのロードはもう不要 -ignore-builtin-innodb -plugin-load = innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so # パラメータ名変更? -default-character-set = sjis +character-set-server = sjis
あと、5.1→5.6へのアップグレードは推奨されていなくて、5.1→5.5、5.5→5.6に上げていってね!だそうです。
ちなみに、5.1のmysqlデータベースを物理コピーして5.6を動かそうとしたらsignal 11で起動しませんでした>< ちなみにちなみに、mysql_fix_privilege_tablesは5.6からなくなったし、mysql_upgradeはmysqldが動いてないと使えないので詰みですね。おとなしく、mysqldumpを流し込んだ方がよさげ。
あと、4.0なmysqlコマンドやlibmysqlなクライアントから接続するには、
old-passwords = 1 skip-secure-auth default-authentication-plugin = mysql_old_password
な設定が必要です。
には、old-passwordsだけでいいように書いてありますが、skip-secure-authとdefault-authentication-pluginも必要です(クッソ嵌った)。
authentication-pluginはuser@hostごとに指定可能で、現在の設定値は
select user,host,password,plugin from mysql.user;
で確認できます。
追記 default-authentication-plugin
少なくとも5.6.20では、default-authentication-plugin に指定可能なものから mysql_old_password がなくなりました。
なので mysql_old_password を指定するとエラーでmysqldが起動しません。
5.1のクライアントからの接続なら、サーバー側のmy.cnfの[mysqld]グループに skip-secure-auth と設定すれば、4.1形式の場合はそのまま普通に接続でき、pre-4.1形式の場合は --skip-secure-authオプション(libmysqlclientの場合はmysql_options()でMYSQL_SECURE_AUTHを偽にセット)をクライアント側で接続時に指定すれば接続できます。
あわせて読みたい
- MySQL :: MySQL 5.6 Reference Manual :: 2.11.1 Upgrading MySQL
- MySQL :: MySQL 5.5 Reference Manual :: 2.12.1 Upgrading MySQL
- MySQL :: MySQL 5.6 Reference Manual :: 5.1.4 Server System Variables
- MySQL :: MySQL 5.1 Reference Manual :: 5.1.4 Server System Variables
- 漢(オトコ)のコンピュータ道: 開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!
- ざっくり5.6の変更点をつかむのに大変助かります
- MySQL Connect 2012での発表事項 - rkajiyamaの日記
- 各所へのポインタ含め、大変助かります