Problemas de raiz do MySQL (acesso negado para usuário root)

4

Estou tendo alguns problemas muito estranhos com meu usuário root do MySQL (5.5). Estou tentando permitir que um host externo acesse o usuário root, mas parece que minha raiz @ localhost não tem "GRANT OPTION" para os bancos de dados locais! Acho que o problema neste momento é causado pelo fato de que eu acho que tenho dois usuários root @ localhost, ambos com diferentes regras de concessão, mas não consigo descobrir como voltar à minha instalação.

Eu já tentei apagar o usuário root e recriá-lo (eu acho), redefinindo a senha dos usuários root (modificando o próprio banco de dados mysql)

Não consigo entrar na conta root usando a senha que eu sempre especifiquei, mas sim uma senha alternativa, que nem sei como consegui ... esse usuário alternativo é o que não parece para ter permissões de root completas, ainda é chamado de root.

- SOLUÇÃO POSTADA ABAIXO -

    
por Matthew Salsamendi 02.03.2013 / 01:06

6 respostas

2

A solução encontrada - Isso é causado pela atualização do MySQL do MySQL 5.1 para o MySQL 5.5 e pela movimentação do esquema de autenticação (o próprio banco de dados MySQL). Como existem atualizações principais para este esquema, usá-lo com um banco de dados 5.5 simplesmente não funcionará, causando dois erros principais: Não é possível conceder privilégios como root Usuários do Mysql deletados

    
por 28.04.2013 / 10:35
4

Você pode iniciar o MySQL com a autenticação desativada. De lá você pode criar / deletar a conta administrativa do MySQL.

Os detalhes que você pode encontrar na documentação do MySQL: link

  1. Desligamento do MySQL
  2. Inicie o MySQL com: mysqld --skip-grant-tables --skip-networking
  3. Na execução do mysql:

    UPDATE mysql.user SET Senha = SENHA ('MyNewPass') WHERE Usuário = 'root';

    GRANT ALL PRIVILEGES EM . TO 'root' @ 'localhost' com GRANT OPTION;

  4. Encerramento do MySQL

  5. Inicie o MySQL como você costuma fazer.
por 02.03.2013 / 01:12
1

Tente acessar o servidor com 'root'@'127.0.0.1' que é diferente de 'root' @ 'localhost'. Em seguida, emita um comando para criar o usuário 'root' @ 'localhost' e conceda todos os privilégios a ele

    
por 14.06.2015 / 12:40
0

Você deve remover a entrada raiz extra @ localhost. Isso pode ser feito com "--skip-grant-tables" como sugerido por Mircea Vutcovici ou em uma sessão normal (local ou remota) se você ainda puder acessar como root.

Tente algo assim:

#get to admin tables
use mysql
#confirm the differences for the root entries
select host, user, grant_priv from user where user = 'root'; 
#adjust as needed
delete from user where user = 'root' and host = 'localhost' and grant_priv = 'N';
#commit
flush privileges;

Update : De acordo com a saída que você mostrou para o teste de seleção, não parece que você tenha um problema com várias raízes com grant_privs diferentes. Portanto, se o conselho dado por Mircea Vutcovici não resolver o seu problema, eu posso supor que o verdadeiro problema está nas privs de root. Talvez você esteja fazendo outra coisa incorretamente, como tentar se conectar ao host errado ou usando uma senha salva em um arquivo de configuração (.my.cnf). Em outras palavras, você pode precisar ser mais específico.

    
por 02.03.2013 / 10:32
0

Digitar SHOW GRANTS FOR 'root'@'localhost'; me mostrou uma senha obscura, então eu entrei no mysql desse sistema usando HeidiSQL em outro sistema (usando root como nome de usuário e senha correspondente) e digitei GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'thepassword' WITH GRANT OPTION;

e funcionou quando voltei para o sistema e me conectei usando mysql -uroot -pthepassword;

    
por 07.08.2014 / 12:30
0

Aqui estão os poucos passos que eu segui no sistema Windows

  1. Faça login no mysql usando o usuário que possui Privilégios (da conta pela qual você excluiu a permissão para a raiz).
  2. Escolha o banco de dados mysql usando o comando use mysql;
  3. Disparar o seguinte comando para atualizar o usuário.

UPDATE mysql.user SET PASSWORD=PASSWORD('MyNewPass') WHERE USER='root';

  1. FLUSH PRIVILEGES;

  2. GRANT ALL ON *.* TO 'root'@'localhost';

  3. faça logout do usuário e faça login na raiz usando o novo senha acima etapas funcionou para mim

por 08.10.2015 / 14:23