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 データベースを監視する を参照してください。