MySQLレプリケーションでストアドプロシージャ・関数を使う際の特別なセキュリティ要件とは?
MySQLのスレーブサーバーは、マスターサーバーのバイナリログから読み取ったステートメントをすべて実行する権限を持っています。そのため、ストアドファンクション(ストアド関数)をレプリケーション環境で使用する場合には、特別なセキュリティ上の制約が設けられています。
具体的には、レプリケーション、あるいはポイントインタイムリカバリ(特定時点への復旧)を目的としたバイナリログが有効になっている場合、MySQLのDBA(データベース管理者)は以下の2つのセキュリティオプションから選択することになります。
オプション1:SUPER権限を付与する
1つ目の方法は、ストアドファンクションを作成したいユーザーに対して、DBAがSUPER権限を付与するというものです。SUPER権限を持つユーザーのみが、バイナリログが有効な環境下でストアドファンクションを作成できるようになります。
この方式では、信頼できる管理者レベルのユーザーに作成権限を限定できるため、安全性は高くなります。ただし、SUPER権限はサーバーのシャットダウンなど他の強力な操作も許可してしまうため、付与対象は最小限にとどめるのが望ましいでしょう。
オプション2:log_bin_trust_function_creatorsを有効にする
2つ目の方法は、システム変数log_bin_trust_function_creatorsを「1」に設定するというものです。この設定を有効にすると、標準的なCREATE ROUTINE権限を持つすべてのユーザーが、SUPER権限なしでストアドファンクションを作成できるようになります。
このモードは、開発者など多くのユーザーに関数の作成を許可したい場合に便利です。一方で、バイナリログに対する信頼性チェックが緩和されるため、悪意のある、あるいは不適切な関数が登録されるリスクも考慮する必要があります。
使い分けのポイント
- セキュリティ重視の場合:SUPER権限による制限を選び、作成者を厳しく管理します。
- 利便性重視の場合:log_bin_trust_function_creatorsを有効にし、CREATE ROUTINE権限を持つユーザーに作成を委ねます。
いずれのオプションを選ぶかは、運用環境における信頼性と利便性のバランスを見極めたうえで判断することが重要です。
-
MySQL 8.0で非推奨となったオプションとシステム変数の一覧
MySQL 8.0では、機能の統合や仕様変更に伴い、多くのオプションおよびシステム変数が非推奨(deprecated)となりました。これらは将来のリリースで削除される可能性があるため、新規の設定や既存環境のメンテナンス時には代替手段への移行を検討することが重要です。以下に、MySQL 8.0で非推奨となった主なオプションと変数をまとめます。Compression:クライアント/サーバープロトコルにおいて、クライアント接続が圧縮を使用しているかどうかを示します。MySQL 8.0.18以降で非推奨となりました。expire_logs_days:指定された日数が経過したバイナリログを自動的に削除(
-
MySQL 8.0で新たに導入されたオプションと変数の一覧
MySQL 8.0で新たに追加されたオプション・変数とは MySQL 8.0では、パフォーマンスの向上や運用管理の柔軟性を高めるために、数多くの新しいオプションおよびシステム変数が導入されました。ここでは、その中から代表的なものを紹介します。各項目には、変数の意味と、追加されたバージョンを併記しています。 ステータス変数(Com_*系) Com_clone: 実行されたCLONEステートメントの数を示します。MySQL 8.0.2で追加されました。 Com_create_role: 実行されたCREATE ROLEステートメントの数を示します。MySQL 8.0.0で追加されました。 Co