Prometheus がモニタリングデータを収集するには、最小限の読み取り専用権限を持つ専用の MySQL アカウントが必要です。このトピックでは、mysqld_exporter を例として、その設定手順を説明します。
この例に関する注記
-
$とmysql>はコマンドプロンプトです。コマンドを実行する際には、これらのプロンプトを含めないでください。 -
#と--はコメントプレフィックスです。コマンドを実行する際には、これらのプレフィックスやコメントテキストを含めないでください。
操作手順
MySQL 8.0 以降のバージョンでは、GRANT 文を使用して新しいユーザーを作成することはできません。ユーザーの作成と権限の付与は、別々の手順で行う必要があります。したがって、この例は作成と権限付与の 2 つの手順に分かれています。
MySQL 8.0 より前のバージョンを使用している場合は、アカウントの作成と権限の付与を 1 つの手順で実行できます。詳細については、「手順3:権限の付与」の操作とコメントをご参照ください。
手順1:root ユーザーまたは管理者としてのログイン
root ユーザーまたは管理者として MySQL にログインします。次の例では root を使用します。
$ mysql -u root -p
# 「Enter password」プロンプトが表示された後、root ユーザーのパスワードを入力します。
Enter password: password
手順2:アカウントの作成
-
次のコマンドを実行して、
mysqld_exporterアカウントを作成します。mysql> CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'password';-
localhost:接続を許可するホストです。これを実際の 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 のプロセス情報を表示できるようにします。
-
-
オプション:結果の検証
次のコマンドを実行して、付与された権限を確認します。
-- ユーザーに付与されている権限を表示します。 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' | +---------------------------------------------------------------------------+
よくある質問
-
Operation CREATE USER failed for 'username'@'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ユーザー名またはホスト名が MySQL の権限テーブルに存在しません。ユーザー名とホスト名のスペルが正しいことを確認してください。ユーザーが存在しない場合は、
CREATE USERコマンドを使用して作成する必要があります。
関連ドキュメント
詳細については、「Prometheus を使用して MySQL を監視する方法」をご参照ください。