web-dev-qa-db-ja.com

ユーザーを監視してプロセスリストを照会する

Zabbixをベースにした企業監視システムがあります。 MySQLの監視は非常に基本的なものなので、さらに情報を追加したいと思います。そのために、MySQLからこの情報を取得してZabbixに送信するスクリプトを実行しました。

取得した情報の中で、現在の接続を取得したいのですが、どうにかしてrootユーザーでしか取得できません。 SELECTおよびPROCESSパーミッション*を持つzabbixユーザーを作成し、mysqladmin -u zabbix processlist、しかし私はAccess denied; you need the PROCESS privilege for this operation

show grants for 'zabbix'@'%';
+----------------------------------------------+
| Grants for zabbix@%                          |
+----------------------------------------------+
| GRANT SELECT, PROCESS ON *.* TO 'zabbix'@'%' |
+----------------------------------------------+
SELECT USER(), CURRENT_USER();
+----------------+----------------+
| USER()         | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+

Zabbixユーザーにプロセスリストを取得するにはどうすればよいですか?

*はい、権限をフラッシュしました

3
Juan Clavero

おそらく、プロセスリストを収集することを唯一の目的とするDBユーザーを作成できます。

エラーメッセージは、zabbixに [〜#〜] process [〜#〜] 特権がないことを示しています。

[〜#〜] process [〜#〜] 特権がない場合、zabbixはzabbixユーザーのプロセスリストのみを表示できます。それほど面白くないですよね?

しかし、[〜#〜]待機[〜#〜]、あなたは言った

mysqladmin -u zabbix processlist

定義していないzabbix@localhostとして接続しようとします。ご注意ください:

  • zabbix@localhostは、ソケットファイルを介して認証します
  • zabbix@'%'はTCP/IP経由で認証されます

単に走る

GRANT SELECT, PROCESS ON *.* TO 'zabbix'@'localhost';

そしてあなたの悩みは終わったはずです。

別のMySQLユーザーを追加せずに、TCP/IPプロトコルを指定するだけ

mysqladmin -u zabbix --protocol=tcp processlist
1
RolandoMySQLDBA