Prometheus requiere una cuenta dedicada de MySQL con permisos mínimos de solo lectura para recopilar datos de monitoreo. Este tema explica el proceso de configuración mediante el ejemplo de mysqld_exporter.
Notas sobre el ejemplo
$ymysql>son símbolos del sistema. No incluya estos símbolos al ejecutar los comandos.#y--son prefijos de comentario. No incluya los prefijos ni el texto del comentario al ejecutar los comandos.
Procedimiento
MySQL 8.0 y versiones posteriores no permiten usar la instrucción GRANT para crear usuarios nuevos. Debe crear el usuario y otorgar los permisos en pasos separados. Por lo tanto, este ejemplo se divide en dos pasos: creación y autorización.
Si utiliza una versión de MySQL anterior a la 8.0, puede crear una cuenta y otorgarle permisos en un solo paso. Para obtener más información, consulte las operaciones y los comentarios en Step 3: Grant permissions.
Paso 1: Iniciar sesión como usuario root o administrador
Inicie sesión en MySQL como usuario root o como administrador. El siguiente ejemplo utiliza root.
$ mysql -u root -p
# After the "Enter password" prompt, enter the password for the root user.
Enter password: password
Paso 2: Crear una cuenta
-
Ejecute el siguiente comando para crear la cuenta
mysqld_exporter.mysql> CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'password';localhost: El host autorizado para conectarse. Reemplace este valor por la dirección IP real.mysqld_exporterypasswordson el nombre de usuario y la contraseña personalizados. Reemplácelos según sea necesario.
-
Opcional: Validación
Ejecute el siguiente comando. Si la consulta devuelve el usuario y el host correspondiente, significa que se creó el usuario
mysqld_exporter.-- Query user information from the mysql.user table. mysql> SELECT User,Host FROM mysql.user WHERE User = 'mysqld_exporter'; -- Query result +-----------------+-----------+ | User | Host | +-----------------+-----------+ | mysqld_exporter | localhost | +-----------------+-----------+
Paso 3: Otorgar permisos
-
Ejecute los siguientes comandos para otorgar los permisos mínimos obligatorios a la cuenta
mysqld_exporter.-- Grant permissions to check the status of primary and secondary servers and view processes for all tables. -- If you use the GRANT statement to directly create a new user, add [IDENTIFIED BY 'password'] at the end to set the user password. mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost'; -- Grant the read permission on the performance_schema.* table. mysql> GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost'; -- Reload the grant tables to apply the new permissions. mysql> FLUSH PRIVILEGES;REPLICATION CLIENT: Permite que la cuenta compruebe el estado de replicación de los servidores primarios y secundarios.PROCESS: Permite que la cuenta consulte la información de procesos en MySQL.
-
Comprobar el resultado (opcional)
Ejecute el siguiente comando para comprobar los permisos otorgados.
-- View the permissions held by the user. mysql> SHOW GRANTS FOR 'mysqld_exporter'@'localhost'; -- Query result +---------------------------------------------------------------------------+ | Grants for mysqld_exporter@localhost | +---------------------------------------------------------------------------+ | GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost' | | GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost' | +---------------------------------------------------------------------------+
Preguntas frecuentes
-
Operation CREATE USER failed for 'username'@'hostname'Ya existe un usuario con el mismo nombre. Elimine primero el usuario existente y luego cree el nuevo:
mysql> DROP USER 'username'@'hostname'; -
Access denied for user 'username'@'hostname' (using password: YES/NO)El servidor MySQL rechazó la conexión porque el nombre de usuario o la contraseña son incorrectos. Compruebe las credenciales y asegúrese de que el usuario tenga los permisos adecuados.
-
Can't find any matching row in the user tableEl nombre de usuario o el nombre del host no existen en las tablas de privilegios de MySQL. Revise posibles errores ortográficos y verifique el nombre del host. Si la ortografía es correcta, ejecute
FLUSH PRIVILEGESpara actualizar las tablas de privilegios.
Referencias
Para obtener más información, consulte How to use Prometheus to monitor MySQL.