デモの準備をしていて、MySQL5.7で動いていたページが以下のようにエラーになったので、今後の為にメモ。既にマニュアルやブログで確認してはいて、情報としては認識していたのですがMySQL8.0.4以降の変更点なので忘れてました。
■ 認証プラグインの変更について
MySQL
8.0では、mysql_native_passwordではなくcaching_sha2_passwordがデフォルトの認証プラグインです。
…
デモの準備をしていて、MySQL5.7で動いていたページが以下のようにエラーになったので、今後の為にメモ。既にマニュアルやブログで確認してはいて、情報としては認識していたのですがMySQL8.0.4以降の変更点なので忘れてました。
■ 認証プラグインの変更について
MySQL
8.0では、mysql_native_passwordではなくcaching_sha2_passwordがデフォルトの認証プラグインです。
…
先日, MySQL Enterprise Auditの機能追加に関して確認したので、大きな変更は無いですが、Enterprise Firewallも再度機能確認してみました。データベースFirewallなので、XSSは防ぐ事は出来ませんが、SQL Injectionは防ぐ事が出来るのでEnterprise AuditとEnterprise Firewallの組み合わせで、重要な情報を扱うデータベースに追加する事で、セキュリティを更に強固にすることが可能です。
【利用例】
1)
Webで公開しているアカウントにFirewallを設定して,外部からの入力フィルターをアプリケーションのフレームワークのEscape処理のみに依存しない。
2)
社内で利用しているアカウントにWHERE句を利用しない参照処理をさせないように制限する。(補足:MySQLでは列レベルの権限設定は可能)
…
MySQL5.7.21からMySQL Enterprise Auditの機能が拡張されています。
主な変更点は、以下の4つになります。
1) 監査ログの圧縮
2) 監査ログの暗号化
3) JSONフォーマットの追加
4) audit_log_read関数による監査ログの確認
まだ、監査を実施してなくて、個人情報、機密情報、売上利益に関わるデータに監査が必用な場合は、MySQLのオプション機能として利用するを検討しても良いかもしれません。
MEMO: MySQL5.7.21から監査設定用のインストールスクリプトもMyISAMからInnoDBに変更されています。
[root@GA01 data]# cat /usr/local/mysql/share/audit_log_filter_linux_install.sql | grep engine CREATE TABLE IF NOT EXISTS audit_log_filter(NAME VARCHAR(64) BINARY NOT NULL PRIMARY KEY, FILTER JSON NOT NULL) engine= InnoDB; CREATE TABLE IF NOT EXISTS audit_log_user(USER …[さらに読む]
MySQL8.0.4
RCがリリースされたので、その中でJSON関連の関数JSON_TABLEがリリースされていたので、合わせて挙動を確認してみました。
MySQLにはJSON関数が30弱ありますが、便利なJSON関数が増えてきているので、これまで以上にNOSQL関連データを扱う処理の選択肢として活用出来そうです。
MySQL 8.0.4 Release Candidateの変更点
参照:https://mysqlserverteam.com/the-mysql-8-0-4-release-candidate-is-available/
多くの変更があるので、上記ブログを確認頂いた方が良さそうです。
一部抜粋:
Security:
caching_sha2_password default authentication mechanism
Dynamic Linking of OpenSSL in MySQL
Server(yaSSL->OpenSSL)
…
5.6.1で既に実装されていてDefaultでONになっているので,5.6や5.7では普段殆ど気にしてませんでしたが、質問頂いたのでindex_condition_pushdownの条件を再確認。
DefaultはONになっています。あえて、OFFにするメリットはあまり無いかと思います。
Index Condition Pushdown(ICP):
ストレージエンジンからフェッチしたレコードをMySQLが評価してWHERE区の条件による絞り込みを行っていたが、
インデックスが貼られたカラムを用いた評価については、ストレージエンジンへ条件式を渡し(プッシュダウン)、ストレージエンジン側で評価を行わせることによってオーバーヘッドの低減させる。
ICPの目標は、完全なレコードの読み取りの回数を減らし、それによって I/O 操作を減らすことです。InnoDB …
[さらに読む]MySQL Enterprise Edition on official docker image
商用版のライセンスを利用者が別途準備する事で(Bring Your Own
License)商用版のMySQLをDockerで利用する事が可能です。
https://blogs.oracle.com/mysql/mysql-enterprise-edition-now-in-docker-store
MySQLライセンスについては此方を参照下さい。
https://www.mysql.com/jp/products/
物理サーバーライセンスなので、Dockerを複数立ち上げるような開発環境ではコストメリットが大きいかと思います。
STEP1: Dockerストアにアクセス
https://store.docker.com
https://store.docker.com/images/mysql-enterprise-server
…
[さらに読む]
MySQL8.0のヒント句が便利になっていたので基本動作確認。
バッチ処理前にSETコマンドで動的に設定していたセッション変数を実行するクエリーにヒントとして追加する事が出来るようです。
WL#681: Hint to temporarily set session variable for current
statement
https://dev.mysql.com/worklog/task/?id=681
Syntax of the SET_VAR hint is:
/*+ SET_VAR( = ) */
大量のデータをOrder by, Group
by等でソート処理していて、Sort_merge_passesが多発している場合にソートバッファーの不足をヒント句で回避してディスクI/Oの発生を抑える事が出来る。
大量データのソートが多いバッチ処理などに組み込んでおくと、処理が早く終わらせる事が出来る。
…
MySQL8.0 RCのDockerイメージがリリースされていたので、今後の検証やデモ用に設定しました。
手軽に検証出来るので、軽く検証するにはお勧めです。
Docker Image: https://github.com/mysql/mysql-docker
[root@DockerHost oracle]# docker pull mysql/mysql-server:8.0 8.0: Pulling from mysql/mysql-server 323fb8f65502: Pull complete b2a15600aac3: Pull complete a1116f4203e9: Pull complete 8be6f234356c: Pull complete a09590e34bdc: Pull complete 554cdb588e9e: Pull complete 851fce189663: Pull complete ca60670c6cb3: Pull complete 98a8195f4fc5: Pull complete ec8c0ade6c51: Pull complete 73919c529833: Pull complete 285b77036a3a: Pull complete 270395aafb1e: Pull complete Digest: sha256:183772d6f5a1decd1eb0252e542d338a5ef8c02fe4cc2cc909b58788f8728c58 Status: Downloaded newer image for mysql/mysql-server:8.0 …[さらに読む]
MySQL Group Replicationは、グループで一つのIDを持つ為、通常のシングルインスタンスと同じようにレプリケーションを組む事が出来ます。4月のInnoDB Clusterリリース以降、MySQLを利用されているお客様から、幾つか質問を受けていたので念の為に挙動を再確認。
環境
複数サーバーを準備出来なかったので,シングサーバーにポートを変更して、2グループ(6サーバー)で先ずはGROUP
REPLICATIONを準備。
mysql> select @@version; +-------------------------------------------+ | @@version | +-------------------------------------------+ | 5.7.18-enterprise-commercial-advanced-log | +-------------------------------------------+ 1 row in set (0.00 sec)
…
[さらに読む]InnoDB Clusterを構築すると、MySQL Routerの設定ファイルが自動的に作成されます。基本的にはTTLによって構成はキャッシュされますが、metadata cache componentが常にMySQLに接続していて、Group Replicationの状況をモニタリングしています。それにより、構成変更や障害発生時には自動的に検知してアプリケーションを適切なデータベースに振り分けてくれます。
【以下、マニュアル抜粋】
MySQL Router keeps a cached list of the online MySQL servers, or
the topology and state of the configured InnoDB cluster.
Initially, the list is loaded from Router’s configuration file
when Router is started. This list was generated with InnoDB
cluster servers when Router was bootstrapped using the –bootstrap
option.
To keep the cache updated, the metadata cache component keeps an open connection to one of …
[さらに読む]