====== 15 MySQL 55 to 56 で問題 ====== ===== 1.古いパスワードでログインできない ===== ERROR 1275 (HY000): Server is running in --secure-auth mode, but 'user'@'192.168.*.*' has a password in the old format; please change the password to the new format MySQL 5.6 からセキュリティが強化されて、古いパスワードではログインできなくなりました。 下記のようにpluginがmysql_native_passwordで、passwordが41桁のハッシュ値になっている必要があります。 mysql> select host,user,password,Grant_priv,plugin from mysql.user; +-----------+--------+-------------------------------------------+------------+-----------------------+ | host | user | password | Grant_priv | plugin | +-----------+--------+-------------------------------------------+------------+-----------------------+ | localhost | root | *2C9D057C3D0DDAAE7A02148024E66BXXXXXXXXXX | Y | mysql_native_password | | 127.0.0.1 | root | *2C9D057C3D0DDAAE7A02148024E66BXXXXXXXXXX | Y | mysql_native_password | | ::1 | root | *2C9D057C3D0DDAAE7A02148024E66BXXXXXXXXXX | Y | mysql_native_password | | localhost | xtrabk | *6D5E2ADA876346509B4082CA455175XXXXXXXXXX | N | mysql_native_password | | localhost | zabbix | *0A42063D91348E9F69BF65D0A0AC6EXXXXXXXXXX | N | mysql_native_password | +-----------+--------+-------------------------------------------+------------+-----------------------+ 5 rows in set (0.00 sec) ===== 古いパスワードのままログインする場合 ===== Server側とClient側両方でsecure_authが無効になっている必要があります。 === Server側 === /etc/my.cnf [mysqld] secure_auth=0 === Client側 === # mysql --skip-secure-auth ===== 2.アップデートのチェックが変更 ===== SQLSTATE[HY000]: General error: 1364 Field 'hoge' doesn't have a default value インサートやアップデート時チェックが厳しくなって、Defaultが設定されてないカラムにNULLを入れようとした時に出る。 ==== 対応方法 ==== mysql> SHOW GLOBAL VARIABLES like 'sql_mode'; +---------------+--------------------------------------------+ | Variable_name | Value | +---------------+--------------------------------------------+ | sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +---------------+--------------------------------------------+ 1 row in set (0.03 sec) mysql> SET GLOBAL sql_mode='NO_ENGINE_SUBSTITUTION'; Query OK, 0 rows affected (0.01 sec) mysql> SELECT @@global.sql_mode; +------------------------+ | @@global.sql_mode | +------------------------+ | NO_ENGINE_SUBSTITUTION | +------------------------+ 1 row in set (0.00 sec) === /etc/my.cnf === 再起動後も設定反映させるために、my.cnfも修正 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES ↓ sql_mode=NO_ENGINE_SUBSTITUTION {{tag>mysql}}