No MySQL 5.5 rodando no Ubuntu 14 em uma configuração mestre-mestre-escravo
De um dos mestres, ao executar a consulta abaixo como usuário com (TODOS OS PRIVILÉGIOS) no banco de dados mas sem nenhum outro privilégio em outro lugar, esta consulta retorna 0
SELECT COUNT(1) SlaveThreadCount
FROM information_schema.processlist
WHERE user='system user'
Ao executar o mesmo usuário como root, IE (TODOS OS PRIVILÉGIOS) em tudo, recebo de volta a contagem real de escravos.
Algum motivo específico para o retorno de 0 e não o SlaveThreadCount real, que é 2 neste caso?
Isso é uma questão de privilégios?
Se eu executar a consulta sem haver WHERE no usuário não raiz, vejo apenas meus processos.
SELECT * FROM information_schema.processlist
Se eu executá-lo em um usuário root, vejo todos os processos.
Definitivamente, é um problema de permissão, então parece que preciso de PROCESS, acabei de responder minha própria pergunta.
Se você tiver todos os privilégios em um banco de dados específico, não poderá ter o privilégio PROCESS . Por quê ? O privilégio PROCESS não é um privilégio no nível do banco de dados. É um privilégio global. Como ?
Cerca de 2,5 anos atrás, respondi Como conceder superprivilégio ao usuário? Alguém queria o privilégio SUPER, mas só tinha todos os privilégios em um banco de dados. Expliquei mencionando como as concessões globais e as concessões em nível de banco de dados são armazenadas. Resumindo, existe uma coluna chamada
Super_priv
na tabelamysql.user
(onde são armazenadas as concessões globais). Essa coluna não existe emmysql.db
(onde as concessões em nível de banco de dados são armazenadas).A mesma coisa se aplica ao privilégio PROCESS . Há uma coluna chamada
Process_priv
na tabelamysql.user
. Essa coluna não existe emmysql.db
.