#author("2022-12-18T06:10:01+00:00","default:hotate","hotate")
#author("2023-10-22T08:56:08+00:00;2022-12-18T06:10:01+00:00","default:hotate","hotate")
#contents
&tag(MySQL, Homebrew);
&tag(MySQL,Homebrew);

* 概要 [#ef123246]
- [[MySQL 8.0 への移行が完了しました ~さようなら全ての MySQL 5.7~ - Cybozu Inside Out | サイボウズエンジニアのブログ>https://blog.cybozu.io/entry/2021/05/24/175000]] (2021/05/24)
 再起動時に AUTO_INCREMENT のカウンタが巻き戻る問題の解消
- [[MySQL 8.0 インストール後 メモ - Qiita>https://qiita.com/katafuchix/items/44b010ba1170da46617f]]
 項目名が5.x系と違っているので注意
 上の項目と比べて正しくはこうです。
 mysql> set global validate_password.length=4;
 mysql> SET GLOBAL validate_password.policy=LOW;

* 認証 [#k63de192]
- [[MySQL8.0 認証方式を変更する(Laravel5) - Qiita>https://qiita.com/ucan-lab/items/3ae911b7e13287a5b917]]
 MySQL8.0.4以降 のログイン認証方式は caching_sha2_password がデフォルト
- [[MySQL8.0新機能 (caching_sha2_password 認証プラグイン) | スマートスタイル TECH BLOG>https://www.s-style.co.jp/blog/2018/05/1807/]]
 mysql_native_password 認証プラグインと比較して、安全なパスワードの暗号化、キャッシュを用いた認証処理のパフォーマンスの向上(今回は検証していませんが。)等のメリットが多いものの、コネクタが対応していない等の理由からmysql_native_password が使用される事も、まだあるかと思います。
- [[MySQL 8.0のパスワードとシステム変数 - Qiita>https://qiita.com/tomgoodsun/items/f62529aa09efb3c3be8f]]
 MySQL 8.0では上記構文が使えないようです。代わりにALTER USER構文を使います。ROLEの機能が入ったせい?
 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
- [[MySQL8.0(or 5.7)でrootのパスワードを短く設定する方法(4文字パスワード可能) | 東京エンジニア>https://tokyo-engineer.com/mysql8-password-root/]]
 SHOW VARIABLES LIKE 'validate_password%';
 で現在のパスワード検証状態を確認します。MySQL8.0の場合下記のように表示されます。MySQL5.7とMySQL8.0は形式が違いますので要注意です。MySQL5.7は`_`(アンダーバー)で区切られていてMySQL8.0は`.`で区切られています。

** 設定例 [#ta59bc6c]
 $ /usr/local/etc/my.cnf
 [mysqld]
 SET GLOBAL validate_password.length=4;
 SET GLOBAL validate_password.policy=LOW;

* [[文字コード]] [#s24a40b7]
- [[MySQL5.7と8.0における文字コード/照合順序の設定方法 - 雑記帳>https://yoneyore.hatenablog.com/entry/2020/11/26/232128]]
 MySQL8.0の場合:デフォルトのままでOK
  (∵MySQL8.0のデフォルト文字コードはutf8mb4のため)
- [[MySQLの文字コード変更 | Hodalog>https://hodalog.com/modify-the-character-encode-of-mysql/]]
 すでにDBとテーブルが存在する場合はもう一手間必要です。

* ユーザ管理 [#ve2b57ea]
- [[【MySQL入門】ユーザー作成の方法を解説!8.0からの変更点も紹介 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト>https://www.sejuku.net/blog/82303#MySQL80]]
 MySQL8.0から上記の方法ではユーザーが作成できなくなりました。どうするのかというと、
 - CREATE USER ‘ユーザー名’ IDENTIFIED BY ‘パスワード’;でユーザーを作成
 - GRANT 権限 ON データベース名.テーブル名 TO ‘ユーザー名’;で権限を付与
 の2段階で行えば良いのです。
- [[【MySQL】MySQL 8 でユーザー作成しGRANTで権限追加する際にエラーが発生 - Qiita>https://qiita.com/namari/items/53c462840b802f10a0cd]]
 原因:MySQL8.0ではGRANT構文でユーザを作成できない

** [[コマンド]]例 [#g132919e]
 CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';
 GRANT ALL PRIVILEGES ON `bar`.* TO `foo`@`localhost`;

* [[macOS]] [#q614aef2]
** [[Catalina]] ([[gem]]) [#f28c1646]
- [[MySQL 8.xをインストールしてmysql2のgemをインストールするまで - Qiita>https://qiita.com/park-jh/items/7f66f5a1d69fbd51d0e4]]
 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
- [[bundle install 時、mysql2でエラー - Qiita>https://qiita.com/tktcorporation/items/0ef8c930fc18ce72c301]]
 bundle config --local build.mysql2 "--with-cppflags=-I/usr/local/opt/openssl/include"

* [[Java]] [#x48d3d83]
** JDBC [#vc86ccbc]
- [[MySQL8.xとのJDBC接続 ※注意事項※ - Qiita>https://qiita.com/syoki/items/3d82ef00300868353572]]
 8.x:「jdbc:mysql://localhost:3306/testdb?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B9:00&rewriteBatchedStatements=true」
- [[SQL Error [08001]: Public Key Retrieval is not allowedの対処法 [JDBC:MySQL] - Qiita>https://qiita.com/noy__/items/f53e9e6210e02233d414]]
 JDBCドライバのプロパティ「allowPublicKeyRetrieval」をtrue、「useSSL」をfalseにする
- [[MySQL :: MySQL Connector/J 8.0 Release Notes :: Changes in MySQL Connector/J 8.0.31 (2022-10-11, General Availability)>https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-31.html]] (2022/10/11)
 Important Change: To comply with proper naming guidelines, the Maven groupId and artifactId for Connector/J have been changed to the following starting with this release:
 - groupId: com.mysql
 - artifactId: mysql-connector-j

* 運用管理 [#u1456205]
** エラー[[ログ]] [#ca32146b]
- [[第155回 エラーログのフィルタリング:MySQL道普請便り|gihyo.jp … 技術評論社>https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0155]] (2021/9/21)
 log_filter_internalとlog_filter_dragnetという2つのフィルタコンポーネントがあり,エラーログをフィルタリングする仕組みが用意されています。

** クエリ[[ログ]] [#v2d9978c]
- [[MySQLクエリログの見方 - Qiita>https://qiita.com/yusuke_mrmt/items/55a9f9d74eafd8f41a34]]
 > show variables like 'general_log%';
- [[MySQL 実行されたSQLをログに出力 | kakiro-web カキローウェブ>https://www.kakiro-web.com/memo/mysql-general-log.html]] (2021/10/30)
 実行されたSQLのログへの出力は、デフォルトでは無効になっています。MySQLのサービスを起動時にSQLのログ出力を有効にするのは、MySQLの設定ファイル(ここでの説明に使用しているCentOSでは「/etc/my.cnf」)で指定可能になっています。
- [[MySQLでログファイルをチェックするには?MySQLで使えるログは4種類 | テックマガジン from FEnetインフラ>https://www.fenet.jp/infla/column/technology/mysql%E3%81%A7%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9Fmysql%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B/]]
 この設定ファイルにログファイルの場所が定義されているのでチェックしてみてください。

** スロークエリ[[ログ]] [#f2a3da65]
- [[スロークエリの確認方法:MySQL編 - pTune.jp>https://ptune.jp/tech/how-to-check-mysql-slow-query/]] (202/05/18)
 1秒以上のクエリを「/tmp/slow.log」へ出力される設定は次の通りです。

* システム [#vc35554b]
- [[MySQL の X Protocol/X DevAPI 周りについて調査したのをまとめたののメモ - tokuhirom's blog>http://blog.64p.org/entry/2018/07/08/233944]]
 通信は従来の MySQL Protocol と異なり、Protocol Buffers Based となっていて、各言語のドライバの実装が簡単になっている

* 関連 [#ocddb9da]
- [[MySQL]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS