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 símbolos
#e--são prefixos de comentário. Não inclua os prefixos nem o texto do comentário 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 permissões em etapas separadas. Por isso, este exemplo divide-se em duas etapas: criação e autorização.
Se você utilizar uma versão do MySQL anterior à 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 na seção Etapa 3: Conceder permissões.
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. Substitua-os conforme necessário.
-
Opcional: Validação
Execute o comando a seguir. Se a consulta retornar o usuário e o host correspondente, a conta
mysqld_exporterfoi criada.-- 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 dos servidores primário e secundário.PROCESS: permite visualizar 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 o mesmo nome. Exclua o usuário existente e crie 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á incorreta. Verifique as credenciais e certifique-se de que 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 se há erros de digitação e confirme o hostname. Se a grafia estiver correta, execute
FLUSH PRIVILEGESpara atualizar as tabelas de privilégios.
Referências
Para mais informações, consulte Como usar o Prometheus para monitorar o MySQL.