Restrições de senha do MySQL?

3

Instalei o MySQL 5.5 em uma VM nova executando o Ubuntu 14 LTS através de apt-get . Durante a instalação, defino uma senha de usuário raiz gerada por um gerenciador de senhas. Após a instalação, não consegui acessar nenhuma função como usuário root do MySQL:

<user>@<hostname>:~$ mysql -u root -p
Enter password: <root user pw set at installation>
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Pensando que algo deu errado ao definir a senha do root, usei

<user>@<hostname>:~$ sudo dpkg-reconfigure mysql-server-5.5

para redefinir a senha de root, embora eu "redefina" a mesma senha. Continuei recebendo o mesmo erro Access denied .

Em seguida, redefino novamente a senha de root, usando o mesmo método, para algo mais curto e de fácil digitação (ou seja, fraco), usando apenas caracteres alfanuméricos. Isso funcionou! Agora posso acessar as funções do MySQL como usuário root.

Parece que a única diferença é a complexidade da senha. A senha strong original tinha 18 caracteres e incluía símbolos de pontuação como ^ \:!, Etc. Apenas como ASCII e sem espaços em branco.

Esta senha violou algum tipo de regra que as senhas do MySQL devem seguir, seja em termos de comprimento ou conjuntos de caracteres? Eu procurei e não encontrei nenhuma referência a essas restrições, o que eu acho que seria bem divulgado. Se não isso, então o que mais poderia ter sido o problema?

Obrigado!

    
por JonahHuron 19.11.2015 / 16:26

1 resposta

0

Não há restrições sobre as senhas do MySQL impostas pelo software MySQL. No que diz respeito ao banco de dados, eles podem ser o tempo que você quiser e o mais complexo que você quiser. Existem algumas ressalvas, no entanto.

Às vezes, o shell ou um script ou algo assim irá interpretar a senha antes de ser passada para o banco de dados, e se houver algum caractere especial, ele poderá ser mutilado. Por exemplo, se sua senha for "*" e você a tiver passado pela linha de comando, o shell interpretará isso como um caractere curinga e preencherá um monte de nomes de arquivos. Você pode ter que escapar de caracteres especiais como esse com uma barra invertida ("\").

Outra ressalva: se sua senha deveria incluir caracteres não-ASCII (Unicode, por exemplo), o que quer que esteja interagindo com o banco de dados tem que dizer ao banco de dados que é isso que está vindo. O MySQL assume o ASCII e geralmente tem que ser dito de outra forma.

Não tenho certeza se algum deles se aplica à sua situação. Mas imaginei que daria uma resposta para a pergunta, conforme solicitado.

    
por 16.10.2018 / 16:28