Não é aconselhável especificar uma senha de uma forma que a exponha e possa ser descoberta por outros usuários. Os métodos que você pode usar para especificar sua senha quando executar programas clientes são listados abaixo, juntamente com as determinações de riscos de cada método:
Nunca forneça a um usuário normal acesso à tabela
mysql.user
. O conhecimento de uma senha
criptografada possibilita a conexão como este usuário. As
senhas só estão embaralhadas para que não seja possível
chegar à senha real que foi usada (acontece muito a
utilização de senhas similares em outras aplicações).
Uso da opção -psua_senha
ou
--password=sua_senha
na linha de comando.
Isto é conveniente mas inseguro, porque sua senha se torna
visível para programas de informação do sistema (como no
ps
) que pode ser chamado por outros
usuários para exibir linhas de comando. (clientes MySQL
normalmente gravam zeros em cima do argumento da linha de
comando durante sua sequência de inicialização, mas ainda
existe um breve intervalo no qual o valor está visível.)
Uso das opções -p
ou
--pasword
(sem especificar o valor
sua_senha
). Neste caso, o programa
cliente solicita a senha do terminal:
shell> mysql -u user_name -p
Enter password: ********
Os caracteres ‘*
’ representam
sua senha.
É mais seguro digitar sua senha desta forma do que especificá-la na linha de comando porque ela não fica visível a outros usuários. Entretanto este método de digitar uma senha é válido somente para programas que você executa de forma interativa. Se você deseja chamar um cliente de um script que não execute interativamente, não existirá oportunidade de digitar a senha do terminal. Em alguns sistemas, você pode descobrir que a primeira linha do seu script é lida e interpretada (incorretamente) como sua senha!
Armazenar a sua senha em um arquivo de configuração. Por
exemplo, você pode listar sua senha na seção
[client]
do arquivo
.my.cnf
no seu diretório home:
[client] password=sua_senha
Se você armazenar sua senha em um arquivo
.my.cnf
, o arquivo não pode ser lido
por seu grupo ou pelos outros usuários. Tenha certeza que o
modo de acesso do arquivo é 400
ou
600
See Secção 4.1.2, “Arquivo de Opções my.cnf
”.
Você pode armazenar sua senha na variável de ambiente
MYSQL_PWD
, mas este método deve ser
considerado extremamente inseguro e não deve ser usado.
Algumas versões de ps
incluem uma
opção para exibir o ambiente de processos em execução;
sua senha estaria em texto puro para a leitura para todos os
usuários. Mesmo em sistemas sem esta versão do
ps
, seria imprudência assumir que não
existe outro método para observar o ambiente de processos.
See Apêndice F, Variáveis de Ambientes do MySQL.
Em resumo, os métodos mais seguros seriam que o programa
cliente solicitasse a senha ou especificar a senha em um arquivo
.my.cnf
corretamente protegido.
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.