MySQL Enterprise Agent は、変数名、レプリケーション、ストレージエンジンステータス情報の取得に必要な、適切な権限をもつユーザが、監視する各MySQLインスタンスに設定されていることが必要です。権限を持つユーザのユーザ名/パスワード情報(root ユーザなど)を提供すれば、Agentのインストーラは適切なユーザを作成します。 このアカウント情報はユーザを作成されるために、インストール中のみ使用され、いかなるファイルにも書き込まれません。このオプションを使用する場合、このセクション残りはスキップします。
rootユーザ情報を提供しない場合、MySQLサーバー内で手動でユーザを作成し、その情報を、ユーザ/パスワード情報としてインストールにおいて提供します。このユーザアカウントに必要な権限は、MySQL Enterprise Agent を使用して収集する情報により異なります。 次の権限は、Monitor Agent が、割り当てられたタスクを制限なしに実行できるように許可します。
SHOW DATABASES: MySQL Enterprise Agent は、監視対象 MySQL サーバーの情報を収集できます。
REPLICATION CLIENT: MySQL Enterprise Agent は、レプリケーションマスタ/スレーブのステータスデータを収集できます。 MySQL Replication アドバイザルールを使用する場合にのみ必要です。
SELECT: MySQL Enterprise Agent は、テーブルオブジェクトの統計情報を収集できます。
SUPER: MySQL Enterprise Agent は、InnoDB テーブルのデータを収集するために SHOW ENGINE INNODB STATUS を実行できます。 この権限は、SHOW MASTER STATUSを使用してレプリケーション情報を取得し、一時的にレプリケーションを停止し、MySQLインスタンスの特定に使用するmysql.inventoryに情報を書き込む場合に必要です。
PROCESS: MySQL 5.1.24 以上を実行する MySQL サーバーを InnoDB で監視する場合、SHOW ENGINE INNODB STATUS を実行するために、PROCESS 権限が必要です。
INSERT: エージェントにより要求される UUID を作成するときに必要です。
CREATE: MySQL Enterprise Agent はテーブルを作成できます。 検出中、エージェントは、サーバの UUID の保存に使用される inventory テーブルを mysql データベース内に作成します。 このテーブルがない場合、エージェントはサーバーの UUID を判別できないため、情報を MySQL Enterprise Service Manager に送信するときにこのサーバーを使用できません。
たとえば、次の GRANT ステートメントは、必要な SELECT 権、REPLICATION CLIENT 権、SHOW DATABASES 権、SUPER 権をエージェントに付与します。
GRANT SELECT, REPLICATION CLIENT, SHOW DATABASES, SUPER, PROCESS ON *.* TO 'mysqluser'@'localhost' IDENTIFIED BY 'agent_password';
セキュリティのため、CREATE 権限および INSERT 権限のみをエージェントに付与して、mysql データベース内でのテーブル作成のみを許可できます。
GRANT CREATE, INSERT ON mysql.* TO 'mysqluser'@'localhost' IDENTIFIED BY 'agent_password';
レプリケーションの検出を機能させるには、対応するレプリケーションマスタに対してレプリケーション権限を持つ各ユーザに、mysql.inventory テーブルで SELECT 権限を付与することも必要です。
これは、MySQL Enterprise Agent がレプリケーションマスタの UUID を読み取れるようにするために必要です。例:
GRANT SELECT ON mysql.inventory TO 'replicationuser'@'%' IDENTIFIED BY 'replication_password';
このステップは、 対応するMySQLサーバーでエージェントを実行した 後で行い、 正しくmysql.inventoryテーブルが作成されるようにします。エージェントを実行し、エージェントをシャットダウンし、上記のGRANTステートメントを実行し、エージェントを再起動します。
エージェントがテーブルの情報にアクセスできない場合、この情報を含んだ警告がエージェントログに書き込まれます
権限情報がスレーブに複製されないように、GRANT ステートメントのログを無効にすることもできますこの場合、上記の GRANT ステートメントを実行する前に SET SQL_LOG_BIN=0 ステートメントを実行してください。
一般的な設定では、エージェントは監視対象の MySQL サーバーと同じマシンで実行するため、ホスト名は localhost になります。 ただし、エージェントが、監視対象 MySQL サーバーをホストするマシンとは異なるマシンで実行している場合、このlocalhostを適切な値に変更します。リモート監視の詳細については、「リモート MySQL Server を監視するようにエージェントを設定する」を参照してください。
