Várias contas de usuário root para mysql no Ubuntu

3

Estou usando o Ubuntu 12.04 e tentando manter as coisas seguras. Eu ainda sou muito novo no Linux, então não tenho certeza de como interpretar isso.

Eu entrei na minha conta root usando mysql -u root -p e, em seguida, para ver todos os usuários que eu digitei SELECT User FROM mysql.user; , que mostravam o seguinte

+------------------+
| User             |
+------------------+
| root             |
| root             |
|                  |
| root             |
|                  |
| Testing          |
| debian-sys-maint |
| phpmyadmin       |
| root             |
+------------------+

Eu entrei no phpmyadmin para verificar o que cada uma das contas de raiz e notei que todos eles têm hosts diferentes. Localhost, 127.0.0.1, :: 1 e outro endereço IP. É necessário manter tudo isso? Eu atualmente SSH no meu servidor (usando um par de chaves) e depois acesso o MySQL através do terminal ou através do PHPMyadmin diretamente da minha URL, então eu tenho certeza que eu apenas acessei através da conta root localhost e nenhuma das outras. p>

Se eu mudar minha senha de root, todas as outras contas de raiz do MySQL serão alteradas (dos hosts diferentes)? O que vocês fariam nessa situação para torná-la mais segura?

Aqui está o que eu estava pensando em fazer, mas talvez haja uma maneira melhor. Eu ia mudar a senha do usuário root do MySQL para algo longo e aleatório (e escrevê-lo), e criar outra conta com uma senha mais curta para o gerenciamento diário.

Para o registro, eu já restrinjai o acesso IP ao PHPMyAdmin e fiz um alias, eu só quero fazer tudo o que puder para evitar que algum idiota tente se apossar dele.

    
por user1104854 28.01.2014 / 01:24

2 respostas

4

Apesar de serem todos denominados 'root', o MySQL considera cada uma dessas entradas do usuário como uma conta única. A conta é baseada na combinação 'usuário' @ 'host'. Cada um deles pode ter uma senha separada, embora isso possa facilmente ser um pesadelo no gerenciamento de contas.

Você tem várias maneiras de alterar as senhas das contas e, dependendo de como você faz isso, pode ser necessário repeti-las para cada conta, para mantê-las sincronizadas.

A primeira maneira (provavelmente a que a maioria das pessoas está familiarizada) está usando SET PASSWORD

shell> mysql -u root -p
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');

Se você quiser atualizá-los todos de uma só vez, use UPDATE

shell> mysql -u root -p
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

A terceira maneira de usar a ferramenta mysqladmin

shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"

Se você usar esse método, precisará anotar:

The mysqladmin method of setting the root account passwords does not work for the 'root'@'127.0.0.1' or 'root'@'::1' account. Use the SET PASSWORD method shown earlier.

Mais informações no site do MySQL

Concordo com a sua ideia de usar uma conta separada para suas tarefas do dia a dia. Você só precisará encontrar a combinação certa de permissões que funcionará com o que deseja, sem ficar muito pesada.

Eu também dou uma olhada nos logs do seu servidor periodicamente (ou tenho uma ferramenta no local) para monitorar os logins do banco de dados, como os do root.

Há muito mais que você pode fazer para proteger sua instalação, mas isso pode facilmente crescer além do escopo disso.

    
por 28.01.2014 / 06:23
3

Um novo MySQL instalado no Ubuntu 12.04 mostra isso.

mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | 127.0.0.1 |
| root             | ::1       |
|                  | localhost |
| debian-sys-maint | localhost |
| root             | localhost |
|                  | myserver  |
| root             | myserver  |
+------------------+-----------+

127.0.0.1, ::1, localhost, myserver(server hostname) são definidos por padrão. Essas entradas são praticamente as mesmas, com ::1 sendo o equivalente em IPV6 de localhost , então geralmente elas são seguras.

Então, basicamente, essas entradas dizem que você está permitindo que esses hosts se conectem ao MySQL como root . No seu caso, você também está permitindo que another IP address se conecte como root ao seu MySQL. Se não houver script ou aplicativo conectando-se ao MySQL a partir desse endereço IP, talvez você queira remover essa entrada.

Você ainda tem uma conta root, portanto, a alteração da senha refletirá para todas as conexões, independentemente dos hosts.

Você também pode executar este comando muito útil para proteger seu servidor MySQL.

 sudo mysql_secure_installation 
    
por 28.01.2014 / 04:38