Depois de configurar a senha de root, por que o MYSQL ainda permite que eu faça o login sem uma senha?

8

Depois de definir a senha de root, por que o MYSQL ainda permite que eu faça o login sem uma senha na linha de comando? Eu posso digitar "mysql" em um prompt root unix e ele não pede senha e ainda me permite acesso root. Eu não estou entendendo porque "mysql -u root" não está me pedindo a senha que eu configurei na conta.

Além disso, não consigo logar no mysql de uma máquina remota como 'root'. Eu não configurei corretamente abaixo? Eu recebo o erro: "Host ... não tem permissão para se conectar a este servidor MySQL. Eu não configurei para '%'?

Aqui está a minha tabela de usuários:

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)
    
por djangofan 10.04.2011 / 19:39

3 respostas

4

Parece que a senha está definida na entrada 'root'@'localhost' user, mas não na entrada 'root'@'%' ; autenticação com senha livre seria permitida com base nisso.

Por motivos de segurança, reconsidere a permissão de acesso root de qualquer lugar. Se você precisar, basta se livrar das especificações do host local:

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

E defina a senha para o 'root'@'%' user:

set password for 'root'@'%' = password('passwordhere');
    
por 10.04.2011 / 19:47
4

Bem, a resposta está certa nessa tabela - você precisa remover as linhas "raiz" que não têm senha listada.

Além disso, parece que você permite conexões de qualquer lugar (?!?!) ao não usar nenhum usuário ou passar. Provavelmente é uma má ideia. Eu faria algo como:

mysql> use mysql;
mysql> delete from user where password = "";
    
por 10.04.2011 / 19:45
2

Não se esqueça de FLUSH PRIVILEGES ou você ainda pode fazer login sem senha.

    
por 20.07.2017 / 22:19