Adicionando um usuário do MySQL quando nenhum usuário do MySQL tem direitos de administrador? [duplicado]

2

Estou trabalhando em uma instalação do MySQL que tem um usuário já criado ("admin"), mas esse usuário não tem uma senha e não tem permissões, por isso não posso criar novos usuários ou até redefinir a senha desse usuário.

Estou usando o Ubuntu Server e, depois de examinar os arquivos de ajuda, ainda não consigo encontrar uma maneira de adicionar um usuário quando o único usuário existente não tem permissões. Eu estou sentindo falta de algo básico? Existe uma maneira de adicionar um super usuário da linha de comando antes de entrar na linha de comando do MySQL?

    
por Michael Morisy 28.04.2011 / 05:39

3 respostas

8

Como um usuário que não tem acesso de administrador, você não pode adicionar outro usuário. Isso derrotaria todo o propósito da autenticação / autorização.

Você pode redefinir a senha de root seguindo as etapas descritas neste link .

    
por 28.04.2011 / 05:44
6

Há algo interessante sobre o MySQL ao usar tabelas skip-grant.

Uma vez que você reinicia o mysqld com skip-grant-tables, você não pode usar os comandos GRANT e REVOKE.

Opção 1) UPDATE senha para root @ localhost;

Você pode fazer isso:

UPDATE mysql.user SET password=PASSWORD('whateverpasswordyouwant') WHERE user='root' and host='localhost';

depois reinicie o mysqld.

Opção 2) Você poderia INSERIR um registro diretamente no mysql.user. Se você quer estabelecer um novo usuário para o seu próprio superusuário, você deve fazer o seguinte (isto funciona para o MySQL 5.5):

INSERT INTO mysql.user SET
                  Host = 'localhost',
                  User = 'superuser',
              Password = PASSWORD('whateverpasswordyouwant'),
           Select_priv = 'Y',
           Insert_priv = 'Y',
           Update_priv = 'Y',
           Delete_priv = 'Y',
           Create_priv = 'Y',
             Drop_priv = 'Y',
           Reload_priv = 'Y',
         Shutdown_priv = 'Y',
          Process_priv = 'Y',
             File_priv = 'Y',
            Grant_priv = 'Y',
       References_priv = 'Y',
            Index_priv = 'Y',
            Alter_priv = 'Y',
          Show_db_priv = 'Y',
            Super_priv = 'Y',
 Create_tmp_table_priv = 'Y',
      Lock_tables_priv = 'Y',
          Execute_priv = 'Y',
       Repl_slave_priv = 'Y',
      Repl_client_priv = 'Y',
      Create_view_priv = 'Y',
        Show_view_priv = 'Y',
   Create_routine_priv = 'Y',
    Alter_routine_priv = 'Y',
      Create_user_priv = 'Y',
            Event_priv = 'Y',
          Trigger_priv = 'Y',
Create_tablespace_priv = 'Y',
              ssl_type = '',
              ssl_cipher = '',
             x509_issuer = '',
            x509_subject = '',
           max_questions = 0,
             max_updates = 0,
         max_connections = 1000000,
    max_user_connections = 1000000
;

Certifique-se de colocar todas as colunas em 'Y', pois o MySQL 4.x, 5.0, 5.1, 5.5 possui permissões diferentes no mysql.user.

Mais um aviso sobre o uso de skip-grant-tables: Quando você inicia o mysqld com isso, todos e sua gramdmother podem efetuar login sem autenticação. Você deve iniciar o mysql assim:

service mysql restart --skip-grant-tables --skip-networking

Isso desativará o TCP / IP e ninguém poderá entrar no banco de dados. Quando terminar, faça o seguinte:

service mysql restart
    
por 28.04.2011 / 17:18
4

Desative todo o acesso à porta do MySQL e, em seguida, inicie o daemon do MySQL manualmente passando --skip-grant-tables para desativar toda a autenticação no servidor.

    
por 28.04.2011 / 05:44

Tags