Eu acidentalmente removi alguns dos privilégios do meu usuário root do MySQL, incluindo a capacidade de alterar tabelas. Existe alguma maneira de restaurar este usuário ao seu estado original (com todos os privilégios)?
UPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root';
# MySQL returned an empty result set (i.e. zero rows).
FLUSH PRIVILEGES ;
# MySQL returned an empty result set (i.e. zero rows).
#1045 - Access denied for user 'root'@'localhost' (using password: YES)
GRANT ALL ON *.* TO 'root'@'localhost'
mysql
privileges
mysql-error-1045
Steven
fonte
fonte
Respostas:
Se
GRANT ALL
não funcionar, tente:mysqld
e reinicie-o com a--skip-grant-tables
opção.mysqld
servidor apenas com:mysql
(ou seja, sem-p
opção e o nome de usuário pode não ser necessário).Emita os seguintes comandos no cliente mysql:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
Depois disso, você deve ser capaz de executar
GRANT ALL ON *.* TO 'root'@'localhost';
e fazer funcionar.fonte
skip-grant-tables
à[mysqld]
seção do seu arquivo de configuração do mysql para acessar o mysql na linha de comando sem senha.Se você excluiu seu
root
usuário por engano, pode fazer uma coisa:mysqld_safe --skip-grant-tables &
mysql -u root -p
e pressione Enter.use mysql;
Em seguida, execute esta consulta:
então reinicie o mysqld
EDITAR: 6 de outubro de 2018
Caso alguém precise dessa resposta, tentei hoje usando innodb_version 5.6.36-82.0 e 10.1.24-MariaDB e funciona se você REMOVER OS ANTERIORES (sem aspas simples, apenas remova-as):
fonte
mysqld.exe
nabin
pasta, nãomysqld_safe.exe
. O que você quer dizer com "mysqld_safe"?mysqld_safe
, apenas execute o binário normal do mysqld:mysqld.exe --skip-grant-tables
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
Eu também removo privilégios de root e banco de dados que não aparecem no console mysql quando eu era um usuário root, então mudei o usuário por
mysql>mysql -u 'userName' -p;
e a senha;após este comando, tudo mostra o banco de dados na raiz.
obrigado
fonte
Eu tinha negado os privilégios de inserir e recarregar para fazer root. Portanto, após atualizar as permissões, FLUSH PRIVILEGES não estava funcionando (devido à falta de privilégio de recarregamento). Então, usei o usuário debian-sys-maint no Ubuntu 16.04 para restaurar os privilégios user.root. Você pode encontrar a senha de user.debian-sys-maint neste arquivo
fonte
Basta fazer login a partir do root usando a respectiva senha, se houver, e simplesmente executar o comando acima para qualquer usuário.
Por exemplo:
fonte
Basta inserir ou atualizar
mysql.user
com o valor dosY
privilégios de cada coluna.fonte
Se você estiver usando WAMP em seu computador local (mysql versão 5.7.14) Etapa 1: abra o arquivo my.ini Etapa 2: descomente esta linha 'skip-grant-tables' removendo o ponto e vírgula etapa 3: reinicie o mysql etapa 4 do servidor: inicie a etapa 5 do console mySQL:
Etapa 6: Problema resolvido !!!!
fonte