添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
0
0

More than 1 year has passed since last update.

【mysql】mysql バックアップ リストア(5.7→8 照合順対応)

Last updated at Posted at 2022-07-28

バックアップ

mysqldump -u [ユーザ名] -p[パスワード] --routines --events [DB名] > [バックアップファイル名]
# ex)
mysqldump -u root -p --routines --events hoge > ./hoge.sql

MySQL v5.5からはデフォでストアドとイベントが出力されない。

オプション
mysql -u [ユーザ名] -p -e "CREATE DATABASE [新しいDB名]";
# ex)
mysql -u root -p -e "CREATE DATABASE newhoge";
8系からデフォルトcollationが変わっている問題

8系からはデフォルトの照合順が utf8mb4_0900_ai_ci になっている。
utf8mb4_general_ci で運用している MySQL 5.7 からバックアップしたものを
8系の環境にリストアするには、DBのデフォルトの文字コードの照合順を
バックアップしたものに合わせる必要がある。

mysql -u [ユーザ名] -p -e "CREATE DATABASE [DB名] COLLATE utf8mb4_general_ci;"
# ex)
mysql -u root -p -e "CREATE DATABASE newhoge COLLATE utf8mb4_general_ci;"

できたDBを use して、以下のコマンドで確認ができる。

mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4                  | utf8mb4_general_ci   |
+--------------------------+----------------------+
1 row in set (0.00 sec)
mysql -u [ユーザ名] -p[パスワード] [リストア先DB名] < [バックアップファイル名]
# ex)
mysql -u root -p newhoge < ./hoge.sql
Node から MySQL8.0へ接続しようとするとエラー

Node.jsでMySQL 8.0へ接続しようとする時に、エラーが発生する。

ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

MySQL8からパスワードの認証形式が変更されている。
しかしながら Nodeの mysql にはまだ実装されていないので接続エラーになる。

解決方法(認証方法を変更する。)

認証方法を「mysql_native_password」に変更する。

ALTER USER 'ユーザ名'@'ホスト名' IDENTIFIED WITH mysql_native_password BY 'パスワード'
# ex)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
パスワードが現在のポリシー要件を満たしていません

パスワードがポリシーに合っていないとエラーになる場合がある。

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

ポリシーの確認

mysql> SHOW VARIABLES LIKE 'validate_password.%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
ポリシーの変更
mysql> set global validate_password.policy = "LOW";
Query OK, 0 rows affected (0.00 sec)
制約文字数の変更
mysql> set global validate_password.special_char_count = 0;
Query OK, 0 rows affected (0.01 sec)

オンラインで値を変更してもDBサーバが再起動するとデフォルトに戻ってしまう。
必要であれば my.cnf を修正して設定を変更しておく。

$ vi my.conf
# 下記の設定を追加・修正する
validate_password.policy=LOW
validate_password.length=4
validate_password.check_user_name=OFF
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
Sign up Login
0
0