ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

02_freebsd:04_database:01_mysql:15_55_to_56

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
02_freebsd/04_database/01_mysql/15_55_to_56.txt · 最終更新: 2022/03/30 16:56 by matsui