Novos usuários com apenas privilégios SELECT podem DROP tabelas

1

Eu criei um novo usuário em mysql usando phpmyadmin que tem apenas o privilégio SELECT . No entanto, esse usuário pode DROP tables , excluir registros, alterar dados ( INSERT , UPDATE ). Eu limpei os privilégios, entrei e saí, etc, mas não mudei.

Alguma idéia?

Muito obrigado.

    
por ale 17.01.2012 / 10:24

2 respostas

4

OK, tenho algumas notícias perturbadoras para você. Se você escreveu as tabelas em um banco de dados de teste, precisará fazer certas alterações.

Em uma instalação padrão do mysql, os bancos de dados de teste têm acesso total a qualquer pessoa.

Para descobrir isso, execute select user,host,db from mysql.db where db like 'test%';

mysql> select user,host,db from mysql.db where db like 'test%';
+------+------+---------+
| user | host | db      |
+------+------+---------+
|      | %    | test    |
|      | %    | test\_% |
+------+------+---------+
2 rows in set (0.00 sec)

mysql>

Se você vir esta exibição quando executar essa consulta, EXCLUIR DUAS LINHAS IMEDIATAMENTE !!! (Falha de segurança). Se você não removê-los, observe que usuários anônimos têm poder de fogo ilimitado em um banco de dados de teste.

Por favor, execute estes comandos para remover esse acesso:

DELETE FROM mysql.db WHERE db LIKE 'test%';
FLUSH PRIVILEGES;

Por favor, observe o que Guia de Estudo de Certificação do MySQL 5.0 diz na página 498, parágrafo 6 em seus bulletpoints, especialmente o último bulletpoint:

On Unix, MySQL comes with a mysql_secure_installation script that can perform several helpful security-related operations on your installation. The script has the following capabilities:

  • Set a password for the root accounts
  • Remove any remotely accessible root accounts.
  • Remove the anonymous user accounts. This improves security because it prevents the possibility of anyone connecting to the MySQL server as root from a remote host. The results is that anyone who wants to connect as root must first be able to log in on the server host, which provides an additional barrier against attack.
  • Remove the test database (If you remove the anonymous accounts, you might also want to remove the test database to which they have access).
    
por 17.01.2012 / 22:22
1

Ou você deu ao usuário mais privilégios do que apenas SELECT, ou você iniciou o MySQL com a opção --skip-grant-tables .

    
por 17.01.2012 / 10:46

Tags