Como você desativa o login anônimo?


9

De acordo com a documentação do MySQL , você pode proteger um servidor MySQL adicionando senhas ou removendo as contas anônimas.

Se quiser impedir que os clientes se conectem como usuários anônimos sem uma senha, atribua uma senha a cada conta anônima ou remova as contas.

Antes de endurecer, minha tabela de usuários era assim.

mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user             | host      | password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| root             | gitlab    |                                           |
| root             | 127.0.0.1 |                                           |
| root             | ::1       |                                           |
|                  | localhost |                                           |
|                  | gitlab    |                                           |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser           | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+

Eu removi todas as contas anônimas, para que a tabela de usuários agora fique assim. (Estou usando o fantoche para gerenciar os usuários, mas o fantoche efetivamente executa um DROP USERcomando).

mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user             | host      | password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser           | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+

Por que ainda consigo fazer login no meu sistema de teste sem nome de usuário ou senha?
O que preciso fazer para impedir que usuários indesejados façam login?

root@gitlab:~# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 98
Server version: 5.5.32-0ubuntu0.12.04.1 (Ubuntu)
....
mysql> 

Atualização : Acabei de descobrir que posso fazer login como root, sem inserir uma senha.

Update2 : Encontrei esta pergunta que contém algumas informações boas, mas não resolve o problema.

Não há usuários anônimos.

mysql> select user,host,password from mysql.user where user='';
Empty set (0.00 sec)

Eu entro como root@localhost.

mysql> select USER(),CURRENT_USER();
+----------------+----------------+
| USER()         | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+ 

Eu não tenho uma senha padrão ou skip-grant-tables definidas em my.cnf

root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'skip-grant-tables'|wc -l
0
root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'pass'|wc -l
0

Update3 :

Eu tentei executar essas etapas com o fantoche, (que deve executar privilégios de liberação automaticamente). Também limpei manualmente os privilégios e também tentei reiniciar o mysql.

Update4 :
Eu também tentei alterar a senha root do mysql e os privilégios liberados. Sem sorte, ainda posso fazer login como qualquer usuário sem uma senha.


Respostas:


6

Eu descobri. Enquanto /etc/mysql/my.cnf não tinha um par de chaves de senha armazenado, havia uma senha armazenada em /root/.my.cnf.

Assim que comentei a senha em /root/.my.cnf, não tive permissão para fazer login sem uma senha (que era o que eu esperava).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.