não pode usar o mysqld com senha vazia na linha de comando

2

Primeiro, eu crio um diretório de banco de dados:

$ mysql_install_db --datadir=./foo

Então, eu inicio o daemon mysql:

$ mysqld --port=5555 --datadir=./foo &

Começa bem e eu posso me conectar a ele usando, por exemplo, Navicat. Estou tentando conectar a partir do shell:

$ mysql --user=root --port=5555 --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

O que fazer? Eu também tentei alterar a senha primeiro para o usuário root:

$ mysqladmin -u root -P 5555 password foo
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

Novamente, a conexão funciona perfeitamente em um aplicativo SQL autônomo, como o Navicat.

    
por yegor256 27.07.2012 / 13:40

2 respostas

0

No MySQL, as contas de usuário incluem o host do qual você está se conectando. Portanto, root@localhost e [email protected] são usuários diferentes e podem ter senhas diferentes. Qualquer um deles também pode nem existir.

Tente esta consulta e verifique se seus usuários root têm senhas diferentes.

SELECT user, host, password FROM mysql.user WHERE user = 'root';

Se eles fizerem isso, efetue login usando qualquer método e altere a senha do usuário root@localhost para o que você deseja que seja. (Uma string vazia não será uma senha, no entanto, nenhuma senha, especialmente para usuários privilegiados, é geralmente considerada uma má ideia.)

    
por 27.07.2012 / 14:06
0

Aqui está o truque:

$ mysqld --port=5555 --datadir=./foo --socket=./sock &

Mais tarde:

$ mysql --socket=./sock --user=root --port=5555

Funciona bem.

    
por 28.07.2012 / 10:00

Tags