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ユーザーにプロセスリストを取得するにはどうすればよいですか?
*はい、権限をフラッシュしました
おそらく、プロセスリストを収集することを唯一の目的とする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