Tenho um banco de dados MySQL que "herdei" e não recebi as credenciais de administrador. No entanto, tenho acesso à caixa em que ele é executado. Existe uma maneira de recuperar as credenciais de administrador ou criar novas?
Leia e execute o capítulo sobre como redefinir a senha do root no Manual de Referência do MySQL.
Este procedimento inicia o daemon mysql sem autorização, permitindo que você se conecte sem fornecer credenciais. Neste modo, você pode se conectar normalmente e redefinir senhas e concessões. Depois disso, não se esqueça de iniciar o mysql novamente com a devida autorização.
Se esta for uma caixa Debian/Ubuntu, há uma conta especial equivalente ao root chamada debian-sys-maint. Você pode ler a senha em / etc/mysql/debian.cnf
Usando essa senha, você pode entrar no mysql como debian-sys-maint usando:
mysql --defaults-file=/etc/mysql/debian.cnf mysql
Depois de fazer login, faça o seguinte:
update user set password=password('<new password>') where user='root';
flush privileges;
quit;
o root agora deve estar acessível usando sua nova senha:
mysql -uroot -p
Meu usuário root não existia. Em
CREATE USER [email protected];
Eu tenho
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
A solução era
mysqld_safe --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
Depois disso, adicionei todos os privs um por um com uma pequena ajuda deste:
mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N
(e este pode e deve ser mais automatizado)
Nota: encontrar o número correto de 'Y's em INSERT
é um PITA.
Como as etapas em Manual de referência do MySQL não são muito claras, estou tentando responder aqui em uma linguagem mais fácil. (esta resposta é relevante para usuários do MacBook OSX):
my.cnf
. (Para mim, foi colocado em @ /Applications/XAMPP/xamppfiles/etc
. Você pode apenas pesquisar se não conseguir encontrá-lo).my.cnf
Em qualquer editor de texto."skip-grant-tables"
(Sem aspas) no final da seção [mysqld]
E salve o arquivo.skip-grant-tables
.Terminal
e execute o comando mysql
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit