Na maioria dos casos você deve utilizar
GRANT
para configurar seus usuários e
senhas, portanto, as informações exibidas a seguir são
aplicadas somentes para usuários avançados. See
Secção 4.4.1, “A Sintaxe de GRANT
e REVOKE
”.
Os exemplos nas seções precedentes ilustram um princípio
importante: quando você armazena uma senha não-vazia
utilizando INSERT
ou
UPDATE
você deve utilizar a função
PASSWORD()
para criptografá-la. Isto é
porque a tabela user
armazena senhas na forma
criptografada, e não como texto puro. Se você esquecer deste
fato, é provável que você possa tentar configurar senhas
desta forma:
shell>mysql -u root mysql
mysql>INSERT INTO user (Host,User,Password)
VALUES('%','jeffrey','biscuit'); mysql>FLUSH PRIVILEGES;
O resultado é que o valor 'biscuit'
é
armazenado como a senha na tabela user
.
Quando o usuário jeffrey
tentar se conectar
ao servidor utilizando esta senha, o cliente
mysql
a criptografa utilizando a função
PASSWORD()
, gerando um vetor de
autenticação baseado em uma senha
criptografada e um número
randômico, obtido do servidor, e envia o resultado ao servidor.
O servidor usa o valor do campo password
na
tabela user
(que é o valor
'biscuit'
não
criptografado ) para realizar os mesmos cálculos e
comparar os resultados. A comparação falha e o servidor
rejeita a conexão:
shell> mysql -u jeffrey -pbiscuit test
Access denied
As senhas devem ser criptografadas quando elas são inseridas na
tabela user
, portanto a instrução
INSERT
deveria ter sido informada no seguinte
formato:
mysql> INSERT INTO user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
Você deve também utilizar a função
PASSWORD()
quando utilizar instruções
SET PASSWORD
:
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
Se você configurar senhas utilizando a instrução
GRANT ... IDENTIFIED BY
ou o comando
mysqladmin password
, a função
PASSWORD()
é desnecessária. Ambos tomam o
cuidado de criptografar a senha para você, então você deve
especificar a senha 'biscuit'
desta forma:
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
ou
shell> mysqladmin -u jeffrey password biscuit
NOTA:
PASSWORD()
é diferente da senha
criptografada do Unix.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.