Esta questão surgiu quando eu estava tentando definir a senha de root em uma reinstalação do mysql-server 5.7 no Ubuntu 16.04. Se você é um knight das tabelas mysql, você provavelmente pode pular para o fundo para chegar às minhas perguntas; caso contrário, por favor, leia sobre o contexto.
Este é um follow-up para a resposta aceita a esta pergunta: ( link ) e eu acho que sou afetado pelo mesmo problema que o comprador original, mas eu quero entender porque a resposta funciona.
Veja o que aconteceu para fazer a pergunta:
Instale o mysql-server em um servidor intocado. O Dpkg apareceu e me pediu para definir a senha de root. Digamos que eu o defina como "senha".
sudo apt-get purge '*mysql*'
para remover tudo relacionado remotamente ao mysql.
... autoremove
e ...autoclean
para uma boa medida. sudo apt-get install mysql-server
. Ele instala bem, mas não me pedem para especificar uma senha de root. (A partir do mysql-server-5.7 você não pode mais usar o dpkg-reconfigure
para redefinir a senha do root. Eu tentei executá-lo de qualquer maneira, mas não produz nada e não faz nada).
Tentando fazer login no servidor mysql com sudo mysql
, recebo ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO).
Acontece que eu posso efetuar login no servidor se especificar a senha que eu configurei durante a primeira instalação.
Quando eu quiser redefinir a senha, posso mysqld_safe --skip-grant-tables
e efetuar login sem senha.
Legal; qual é o problema?
Eu reinstalei o mysql, desde que não houvesse senha, mas uma senha de uma instalação anterior foi escolhida nas tabelas de permissões.
A resposta a esta pergunta ( link ) confirma a existência das tabelas de concessão ... mas qual é a essência delas?
Então, finalmente, as duas perguntas estão no centro da minha confusão: