Antes de eu estragar alguma coisa, quando eu faço login usando $ mysql -u root -p
e mostro bancos de dados:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| game_data |
| test |
+--------------------+
Então tentei criar um novo usuário e percebi que algo estava errado com os PRIVILEGES.
Então, excluí os novos usuários e acho que removi acidentalmente o 'root' e o 'Admin'.
Então, tento criar 'root' novamente, mas recebo o erro de acesso negado ao conceder todos os privilégios.
mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Se eu entrar no MySQL novamente usando $ mysql -u root -p
e mostrar bancos de dados,
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
Todos os outros bancos de dados se foram.
Como faço para corrigir o MySQL agora?
Não consigo encontrar o banco de dados 'mysql', não consigo criar banco de dados, criar usuário, qualquer coisa que eu tente fazer receberá um erro.
ERRO 1045 (28000): acesso negado para o usuário 'root' @ 'localhost' (usando a senha: YES).
Devo reinstalar o MySQL usando MacPorts? Se reinstalar, perderei o banco de dados game_data
, certo?
fonte
-p
e a senha. Eu sei que é bobagem, mas pode ajudar alguém.Respostas:
Siga os passos abaixo.
Inicie a instância ou daemon do servidor MySQL com a
--skip-grant-tables
opção (configuração de segurança).Execute essas instruções.
Se você enfrentar o campo desconhecido Erro de senha acima, use:
Por fim, reinicie a instância / daemon sem a
--skip-grant-tables
opçãoAgora você deve conseguir se conectar com sua nova senha.
Digite a senha:
my_password
Correção para o erro "Não é possível bloquear o ibdata1" do MySQL
fonte
Nenhuma das opções acima foi útil para mim. Eu descobri que precisava limpar o método de plug-in. Na 5.6, eu poderia fazer:
Em 5.7, eu achei que precisava:
De acordo com os documentos, com o plug-in definido como uma string vazia, ele deve ter efetivamente assumido o padrão mysql_native_password, mas pode estar ficando confuso com um hash de senha vazio. Para obter mais nuances, você pode ler a documentação aqui: https://dev.mysql.com/doc/refman/5.7/en/native-authentication-plugin.html
fonte
set plugin='mysql_native_password'
fez isso por mim, obrigado! Para referência: dev.mysql.com/doc/refman/5.7/en/…Verifique também se o registro necessário na tabela
user
possui umplugin
campo vazio (pode haver, por exemplo,"unix_socket"
).Desde a versão 5.5.7, o mysql possui vários plugins de autenticação, https://dev.mysql.com/doc/refman/5.6/en/authentication-plugins.html
Portanto, se você tiver um
plugin
campo não vazio , a senha será ignorada e haverá um aviso no log de erros do mysql (para mim é/var/log/mysql/error.log
):[Warning] 'user' entry 'root@localhost' has both a password and an authentication plugin specified. The password will be ignored.
fonte
plugin
dosmysql_native_password
.Você pode ver algo assim;
Protegendo a implantação do servidor MySQL.
Se você vê, diz
Assista aos últimos 10 minutos deste vídeo , ele ensina como você faz.
fonte
Tente:
fonte
--no-defaults --force
switches fazem? Caso contrário, é uma duplicata do VLQ da resposta aceita acima.ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
No meu caso, eu estava com um banco de dados corrompido, depois de reiniciar o mysql no Debian, o login root estava sem senha. A solução foi esta:
Algumas outras respostas também mencionaram o plug-in native_password, mas é assim que você pode fazê-lo sem mexer muito. É assim que deve ser mudado.
fonte