Managed Service for Prometheus に MySQL データベースからモニタリングデータを収集するには、MySQL ユーザーを作成し、そのユーザーに最小限の権限を付与する必要があります。このトピックでは、ID mysqld_exporter
のユーザーを作成します。
使用上の注意
$
とmysql>
はプロンプト文字です。コマンドを入力する際は、プロンプト文字を入力しないでください。#
と--
は注釈のプレフィックスです。コマンドを入力する際は、注釈やプレフィックスを入力しないでください。
手順
MySQL データベース 8.0 以降では、GRANT
ステートメントを使用して新しいユーザーを作成することはサポートされていません。ユーザーは個別に作成し、権限を付与する必要があります。このトピックでは、手順 2 でユーザーの作成方法、手順 3 でユーザーへの権限の付与方法について説明します。
8.0 より前の MySQL データベースを使用している場合は、root ユーザーまたは管理者としてログオンした後、ユーザーを作成して権限を付与できます。詳細については、手順 3: ユーザーに権限を付与する を参照してください。
手順 1: root ユーザーまたは管理者としてログオンする
MySQL データベースを起動し、ログオンします。root ユーザーを使用した場合を例に説明します。
$ mysql -u root -p
# 「password」を root ユーザーのパスワードに置き換えます。
Enter password: password
手順 2: ユーザーを作成する
コマンドラインで次のコマンドを実行し、
mysqld_exporter
という名前のユーザーを作成します。mysql> CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'password';
localhost
: 接続可能なホストの IP アドレス。実際の IP アドレスに置き換えてください。mysqld_exporter
とpassword
をカスタムのユーザー名とパスワードに置き換えてください。
検証 (オプション)
コマンドラインで次のコマンドを実行します。ユーザーとホストの情報がクエリされた場合、
mysqld_exporter
が作成されています。-- mysql.user テーブルからユーザー情報をクエリします。 mysql> SELECT User,Host FROM mysql.user WHERE User = 'mysqld_exporter'; -- 結果 +-----------------+-----------+ | User | Host | +-----------------+-----------+ | mysqld_exporter | localhost | +-----------------+-----------+
手順 3: ユーザーに権限を付与する
コマンドラインで次のコマンドを実行し、
mysqld_exporter
に最小限の権限を付与します。-- ユーザーにすべてのテーブルへのアクセス権限、およびプロセス情報とマスターデータベースとスレーブデータベースの状態を確認する権限を付与します。 -- GRANT ステートメントを使用して新しいユーザーを作成する場合、次のコマンドの末尾に [IDENTIFIED BY 'password'] を追加してパスワードを設定することをお勧めします。 mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost'; -- performance_schema.* テーブルに対する読み取り権限を追加します。 mysql> GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost'; -- 権限付与テーブルをリロードして、権限付与を有効にします。 mysql> FLUSH PRIVILEGES;
REPLICATION CLIENT
: マスターデータベースとスレーブデータベースの状態を確認する権限をユーザーに付与するステートメント。PROCESS
: プロセス情報を確認する権限をユーザーに付与するステートメント。
検証 (オプション)
コマンドラインで次のコマンドを実行し、ユーザーに必要な権限が付与されているかどうかを確認します。
-- ユーザーの権限を表示します。 mysql> SHOW GRANTS FOR 'mysqld_exporter'@'localhost'; -- 結果 +---------------------------------------------------------------------------+ | Grants for mysqld_exporter@localhost | +---------------------------------------------------------------------------+ | GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost' | | GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost' | +---------------------------------------------------------------------------+
FAQ
Operation CREATE USER failed for 'usernam'@'hostname'
このエラーは、同じ名前のユーザーが既に存在するため、ユーザーの作成に失敗したことを示しています。この問題を解決するには、既存のユーザーを削除してから新しいユーザーを作成します。ユーザーを削除するには、次のコマンドを実行します。
mysql> DROP USER 'username'@'hostname';
Access denied for user 'username'@'hostname'(using password: YES/NO)
このエラーは、ユーザー名またはパスワードが無効なため、MySQL サーバーが接続要求を拒否したことを示しています。この問題を解決するには、ユーザー名とパスワードを確認し、ユーザーに必要な権限が付与されているかどうかを確認します。
Can't find any matching row in the user table
このエラーは、ユーザー名またはホスト名が権限付与テーブルに存在しないことを示しています。この問題を解決するには、スペルミスを確認し、ホスト名が有効であることを確認します。スペルが正しい場合は、
FLUSH PRIVILEGES
コマンドを使用して権限付与テーブルを更新します。
参考資料
Managed Service for Prometheus を使用して MySQL モニタリングデータを収集する方法については、Managed Service for Prometheus を使用して MySQL データベースを監視する を参照してください。