Prometheus memerlukan akun MySQL khusus dengan izin read-only minimal untuk mengumpulkan data pemantauan. Topik ini menjelaskan proses penyiapan menggunakan mysqld_exporter sebagai contoh.
Catatan contoh
-
$danmysql>adalah prompt perintah. Jangan sertakan prompt tersebut saat menjalankan perintah. -
#dan--adalah awalan komentar. Jangan sertakan awalan atau teks komentar tersebut saat menjalankan perintah.
Prosedur
MySQL versi 8.0 dan yang lebih baru tidak mengizinkan Anda menggunakan pernyataan GRANT untuk membuat pengguna baru. Anda harus membuat pengguna dan memberikan izin dalam langkah terpisah. Oleh karena itu, contoh ini dibagi menjadi dua langkah: pembuatan dan otorisasi.
Jika Anda menggunakan versi MySQL sebelum 8.0, Anda dapat membuat akun dan memberikan izin dalam satu langkah. Untuk informasi selengkapnya, lihat operasi dan komentar di Langkah 3: Berikan izin.
Langkah 1: Masuk sebagai pengguna root atau administrator
Masuk ke MySQL sebagai pengguna root atau administrator. Contoh berikut menggunakan root.
$ mysql -u root -p
# Setelah prompt "Enter password", masukkan password untuk pengguna root.
Enter password: password
Langkah 2: Buat akun
-
Jalankan perintah berikut untuk membuat akun
mysqld_exporter.mysql> CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'password';-
localhost: Host yang diizinkan untuk terhubung. Ganti nilai ini dengan alamat IP aktual. -
mysqld_exporterdanpasswordadalah username dan password kustom. Ganti sesuai kebutuhan.
-
-
Opsi tambahan: Validasi
Jalankan perintah berikut. Jika kueri mengembalikan pengguna dan host yang sesuai, pengguna
mysqld_exportertelah berhasil dibuat.-- Kueri informasi pengguna dari tabel mysql.user. mysql> SELECT User,Host FROM mysql.user WHERE User = 'mysqld_exporter'; -- Hasil kueri +-----------------+-----------+ | User | Host | +-----------------+-----------+ | mysqld_exporter | localhost | +-----------------+-----------+
Langkah 3: Berikan izin
-
Jalankan perintah berikut untuk memberikan izin minimum yang diperlukan kepada akun
mysqld_exporter.-- Berikan izin untuk memeriksa status server primary dan secondary serta melihat proses untuk semua tabel. -- Jika Anda menggunakan pernyataan GRANT untuk langsung membuat pengguna baru, tambahkan [IDENTIFIED BY 'password'] di akhir untuk menetapkan password pengguna. mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost'; -- Berikan izin read pada tabel performance_schema.*. mysql> GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost'; -- Muat ulang tabel grant agar izin baru diterapkan. mysql> FLUSH PRIVILEGES;-
REPLICATION CLIENT: Mengizinkan akun memeriksa status replikasi server primary dan secondary. -
PROCESS: Mengizinkan akun melihat informasi proses di MySQL.
-
-
Verifikasi hasil (opsional)
Jalankan perintah berikut untuk memverifikasi izin yang telah diberikan.
-- Tampilkan izin yang dimiliki pengguna. mysql> SHOW GRANTS FOR 'mysqld_exporter'@'localhost'; -- Hasil kueri +---------------------------------------------------------------------------+ | 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 'username'@'hostname'Pengguna dengan nama yang sama sudah ada. Hapus pengguna yang ada terlebih dahulu, lalu buat yang baru:
mysql> DROP USER 'username'@'hostname'; -
Access denied for user 'username'@'hostname' (using password: YES/NO)Server MySQL menolak koneksi karena username atau password salah. Verifikasi kredensial dan pastikan pengguna memiliki izin yang sesuai.
-
Can't find any matching row in the user tableUsername atau hostname tidak ada di tabel grant MySQL. Periksa kesalahan penulisan dan verifikasi hostname. Jika penulisan sudah benar, jalankan
FLUSH PRIVILEGESuntuk merefresh tabel grant.
Referensi
Untuk informasi selengkapnya, lihat Cara menggunakan Prometheus untuk memantau MySQL.