O log do MySQL mostra 3 usuários root, 2 sem senhas? Por quê?

6

Nosso registro do MySQL exibiu um aviso sobre a reinicialização de cerca de dois usuários raiz que não possuem senhas.

Eu entrei no MySQL e verifiquei todos os usuários:

mysql> select * from mysql.user;

e veja:

Host       |    User   |   Password
localhost       root      *76685yt868itetc
web12-b0        root
127.0.0.1       root  

Primeiro, por que existem 3 usuários root (e precisamos 127.0.0.1 já que temos localhost)?

Segundo, por que dois deles não tinham senhas definidas?

Em terceiro lugar, os hosts web12-b0 e 127.0.0.1 têm acesso root completo sem precisar usar uma senha (como aparece)?

Em quarto lugar, há alguma razão válida para isso ou devo sugerir que o administrador insira senhas nesses dois hosts?

Obrigado pelas suas respostas.

    
por Lothar_Grimpsenbacher 15.02.2011 / 08:31

2 respostas

10

Eu sei que este é um tópico antigo, mas queria adicionar mais alguns pontos:

Três usuários root são gerados por padrão quando você cria um banco de dados pela primeira vez. Todos são criados sem senhas. Nesse momento, a instalação também recomenda que você defina uma senha executando mysqladmin -u root password , o que mudará a senha para 'root' @ '%'.

Os dois que ainda não possuem senhas são locais para o host especificado na coluna Host; Em ambos os casos, é o servidor de banco de dados real. Ambos têm acesso total ao banco de dados por padrão. Pode-se supor corretamente que, em muitos casos, se você fosse capaz de efetuar login na máquina (o que seria necessário para usar uma dessas contas raiz), provavelmente terá acesso aos arquivos reais no disco. Portanto, ter senhas nelas pode não gerar segurança real.

Por isso, prefiro remover essas contas padrão e manter as contas com senha.

DELETE FROM mysql.user WHERE Password=''; FLUSH PRIVILEGES

    
por 05.03.2014 / 19:11
3

First off, why are there 3 root users

Porque alguém adicionou três usuários root.

(and do we need 127.0.0.1 since we have localhost)?

No MySQL, localhost e 127.0.0.1 são fundamentalmente diferentes. O host 'localhost' no MySQL significa "conectar localmente usando um soquete unix". O host 127.0.0.1 significa "conectar através da interface de loopback usando TCP".

Second, why would two of them not have passwords set?

Porque ninguém definiu uma senha para eles.

Third, do the web12-b0 and 127.0.0.1 hosts have full root access without having to use a password (as it appears)?

Você forneceu informações insuficientes para responder a isso. A presença de um usuário no MySQL não implica em permissão além de USAGE (capacidade de conexão). Para ver as permissões de um usuário, você deve usar:

SHOW GRANTS FOR user@host;

Fourth, is there some valid reason for this or should I suggest the admin put passwords on those two hosts?

Aconselho-me a não ter contas sem uma senha no seu servidor MySQL.

    
por 15.02.2011 / 08:59