Sou novo no lado administrativo do DBMS e estava configurando um novo banco de dados esta noite (usando MySQL) quando percebi isso. Depois de conceder a um usuário um privilégio pela primeira vez, outra concessão é criada que se parece com
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
A documentação diz que o USAGE
privilégio significa "sem privilégios", então estou inferindo que isso concede trabalho hierarquicamente e talvez um usuário deva ter algum tipo de privilégio para todos os bancos de dados, então isso serve como um pega-tudo?
Também não entendo por que essa linha contém uma IDENTIFIED BY
cláusula quando a concessão que criei não tem uma (principalmente porque não entendo a que propósito a IDENTIFIED BY
cláusula serve).
Edit: Desculpe por não declarar isso originalmente, as concessões eram
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
fonte
Respostas:
Como você disse, no MySQL
USAGE
é sinônimo de "sem privilégios". Do manual de referência do MySQL :USAGE
é uma forma de informar ao MySQL que existe uma conta sem conceder nenhum privilégio real a essa conta. Eles simplesmente têm permissão para usar o servidor MySQL, portantoUSAGE
. Corresponde a uma linha na`mysql`.`user`
tabela sem nenhum conjunto de privilégios.A
IDENTIFIED BY
cláusula indica que uma senha foi definida para esse usuário. Como sabemos que um usuário é quem ele diz ser? Eles se identificam enviando a senha correta de sua conta.A senha de um usuário é um dos atributos de conta de nível global que não está vinculado a um banco de dados ou tabela específica. Ele também vive na
`mysql`.`user`
mesa. Se o usuário não tiver nenhum outro privilégioON *.*
, ele será concedidoUSAGE ON *.*
e seu hash de senha será exibido lá. Isso geralmente é um efeito colateral de umaCREATE USER
declaração. Quando um usuário é criado dessa forma, ele inicialmente não tem privilégios, portanto, é apenas concedidoUSAGE
.fonte
Eu estava tentando encontrar o significado de
GRANT USAGE on *.* TO
e encontrei aqui. Posso esclarecer queGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
será concedido quando você criar o usuário com o seguinte comando (CREATE
):Quando você concede privilégios com
GRANT
, novos privilégios são adicionados a ele.fonte
Além disso, as senhas do mysql, quando não usando a
IDENTIFIED BY
cláusula, podem ser valores em branco, se não em branco, eles podem ser criptografados. Mas simUSAGE
é usado para modificar uma conta, concedendo limitadores de recursos simples, comoMAX_QUERIES_PER_HOUR
, novamente, isso pode ser especificado também usando a cláusula WITH, em conjunto comGRANT USAGE
(sem privilégios adicionados) ouGRANT ALL
, você também pode especificarGRANT USAGE
no nível global, nível do banco de dados, nível de mesa, etc ....fonte