Eu estava testando algumas coisas e adicionei um:
grant usage on statistics.* to cptnotsoawesome@localhost identified by 'password';
então agora quando eu faço
show grants for cptnotsoawesome@localhost;
Vejo que um deles é:
Grants for cptnotsoawesome@localhost
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring'
Agora eu quero removê-lo, pois acho que é um risco de segurança, então faço o seguinte:
REVOKE USAGE ON *.* FROM 'cptnotsoawesome'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Mas ainda mostra essa concessão USAGE na lista de concessões.
Grants for cptnotsoawesome@localhost
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring'
Alguma idéia por quê? O que estou fazendo errado?
Nos bastidores, quando você vê um usuário apenas com USAGE, esse usuário está escrito na tabela mysql.user com todos os privilégios globais desativados.
Você declarou originalmente que o usuário tinha isso:
Você deve ver uma linha
mysql.user
com a senha MD5 e todos os privs globais definidos comoN
. Você também deve ver uma linha no mysql.db comVocê deve ser capaz de vê-los com esta consulta
Quando você executou o comando REVOKE, você simplesmente removeu a linha de
mysql.db
. Isso não tocou a linha emmysql.user
. Assim, você ainda pode fazer login no mysql e ter apenas os privs para executarSe houver um banco de dados de teste chamado
test
ou um banco de dados cujos primeiros 5 caracteres sejamtest_
, (procure-o usandoSELECT * FROM mysql.db WHERE db LIKE 'test%';
), o usuário com apenas USAGE poderá ter direitos totais aos bancos de dados de teste. Eu escrevi sobre isso em ServerFault em setembro de 2011 .Se você deseja remover a linha do mysql.user, você pode executar
ou
USAGE significa que o usuário não tem nenhum privilégio.
drop user cptnotsoawesome@localhost;
Você não pode realmente revogar USAGE sem eliminar o usuário. USAGE é um privilégio de nível global.
dê uma olhada neste link .
Por favor, olhe para esta pergunta: -
https://stackoverflow.com/questions/2126225/why-is-a-grant-usage-created-the-first-time-i-grant-a-user-privileges
Basicamente, o privilégio USAGE funciona como um privilégio de nível de sistema que você não pode remover. É usado internamente pelo MySQL para que você possa manipular o sistema de privilégios.