O Prometheus exige uma conta dedicada no MySQL com permissões mínimas de somente leitura para coletar dados de monitoramento. Este tópico descreve a configuração usando o mysqld_exporter como exemplo.
Observações sobre o exemplo
Os símbolos
$emysql>são prompts de comando. Não os inclua ao executar comandos.Os caracteres
#e--indicam comentários. Ignore esses prefixos e o texto dos comentários ao executar comandos.
Procedimento
O MySQL 8.0 e versões posteriores não permitem usar a instrução GRANT para criar usuários. Crie o usuário e conceda as permissões em etapas separadas. Por isso, este exemplo divide o processo em duas etapas: criação e autorização.
Se você utilizar uma versão anterior ao MySQL 8.0, crie a conta e conceda as permissões em uma única etapa. Para mais informações, consulte as operações e comentários em Step 3: Grant permissions.
Etapa 1: Fazer logon como usuário root ou administrador
Faça logon no MySQL como usuário root ou administrador. O exemplo a seguir usa o usuário root.
$ mysql -u root -p
# After the "Enter password" prompt, enter the password for the root user.
Enter password: password
Etapa 2: Criar uma conta
-
Execute o comando a seguir para criar a conta
mysqld_exporter.mysql> CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'password';localhost: host com permissão de conexão. Substitua pelo endereço IP real.mysqld_exporterepasswordsão o nome de usuário e a senha personalizados. Altere-os conforme necessário.
-
Opcional: Validação
Execute o comando a seguir. Se a consulta retornar o usuário e o host correspondente, o usuário
mysqld_exporterfoi criado com êxito.-- 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 | +-----------------+-----------+
Etapa 3: Conceder permissões
-
Execute os comandos a seguir para conceder as permissões mínimas necessárias à conta
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 a conta verifique o status de replicação entre servidores primários e secundários.PROCESS: autoriza a visualização de informações de processos no MySQL.
-
Verificar o resultado (opcional)
Execute o comando a seguir para confirmar as permissões concedidas.
-- 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' | +---------------------------------------------------------------------------+
Perguntas frequentes
-
Operation CREATE USER failed for 'username'@'hostname'Já existe um usuário com esse nome. Exclua o usuário existente antes de criar o novo:
mysql> DROP USER 'username'@'hostname'; -
Access denied for user 'username'@'hostname' (using password: YES/NO)O servidor MySQL rejeitou a conexão porque o nome de usuário ou a senha está incorreto. Verifique as credenciais e confirme se o usuário tem as permissões adequadas.
-
Can't find any matching row in the user tableO nome de usuário ou hostname não existe nas tabelas de privilégios do MySQL. Verifique erros de digitação e valide o hostname. Se estiver tudo correto, execute
FLUSH PRIVILEGESpara atualizar as tabelas de privilégios.
Referências
Para mais informações, consulte How to use Prometheus to monitor MySQL.