再起動時に AUTO_INCREMENT のカウンタが巻き戻る問題の解消
項目名が5.x系と違っているので注意 上の項目と比べて正しくはこうです。 mysql> set global validate_password.length=4; mysql> SET GLOBAL validate_password.policy=LOW;
MySQL8.0.4以降 のログイン認証方式は caching_sha2_password がデフォルト
mysql_native_password 認証プラグインと比較して、安全なパスワードの暗号化、キャッシュを用いた認証処理のパフォーマンスの向上(今回は検証していませんが。)等のメリットが多いものの、コネクタが対応していない等の理由からmysql_native_password が使用される事も、まだあるかと思います。
MySQL 8.0では上記構文が使えないようです。代わりにALTER USER構文を使います。ROLEの機能が入ったせい? ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
SHOW VARIABLES LIKE 'validate_password%'; で現在のパスワード検証状態を確認します。MySQL8.0の場合下記のように表示されます。MySQL5.7とMySQL8.0は形式が違いますので要注意です。MySQL5.7は`_`(アンダーバー)で区切られていてMySQL8.0は`.`で区切られています。
$ /usr/local/etc/my.cnf [mysqld] SET GLOBAL validate_password.length=4; SET GLOBAL validate_password.policy=LOW;
MySQL8.0の場合:デフォルトのままでOK (∵MySQL8.0のデフォルト文字コードはutf8mb4のため)
すでにDBとテーブルが存在する場合はもう一手間必要です。
MySQL8.0から上記の方法ではユーザーが作成できなくなりました。どうするのかというと、 - CREATE USER ‘ユーザー名’ IDENTIFIED BY ‘パスワード’;でユーザーを作成 - GRANT 権限 ON データベース名.テーブル名 TO ‘ユーザー名’;で権限を付与 の2段階で行えば良いのです。
原因:MySQL8.0ではGRANT構文でユーザを作成できない
CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx'; GRANT ALL PRIVILEGES ON `bar`.* TO `foo`@`localhost`;
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
bundle config --local build.mysql2 "--with-cppflags=-I/usr/local/opt/openssl/include"
8.x:「jdbc:mysql://localhost:3306/testdb?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B9:00&rewriteBatchedStatements=true」
JDBCドライバのプロパティ「allowPublicKeyRetrieval」をtrue、「useSSL」をfalseにする
log_filter_internalとlog_filter_dragnetという2つのフィルタコンポーネントがあり,エラーログをフィルタリングする仕組みが用意されています。
> show variables like 'general_log%';
実行されたSQLのログへの出力は、デフォルトでは無効になっています。MySQLのサービスを起動時にSQLのログ出力を有効にするのは、MySQLの設定ファイル(ここでの説明に使用しているCentOSでは「/etc/my.cnf」)で指定可能になっています。
この設定ファイルにログファイルの場所が定義されているのでチェックしてみてください。
1秒以上のクエリを「/tmp/slow.log」へ出力される設定は次の通りです。
通信は従来の MySQL Protocol と異なり、Protocol Buffers Based となっていて、各言語のドライバの実装が簡単になっている