Eu tenho um banco de dados MySQL que "herdei" e não recebi as credenciais de administrador. No entanto, tenho acesso à caixa em que é executado. Existe uma maneira de recuperar as credenciais de administrador ou criar novas?
Leia e execute o capítulo sobre redefinição da senha 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. Nesse modo, você pode conectar-se normalmente e redefinir senhas e concessões. Depois não esqueça de iniciar o mysql novamente com a devida autorização.
Se esta é uma caixa Debian / Ubuntu, existe uma conta equivalente equivalente a raiz chamada debian-sys-maint . Você pode ler a senha em /etc/mysql/debian.cnf
Usando essa senha, você pode efetuar login 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 root@localhost;
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 foi
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 disso:
mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N
(e este poderia e deveria ser automatizado mais)
Nota: encontrar o número correto de 'Y's no INSERT
é uma PITA.
Como as etapas do 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 @ /Applications/XAMPP/xamppfiles/etc
. Você pode pesquisar apenas se não conseguir encontrá-lo).my.cnf
arquivo em qualquer editor de texto. "skip-grant-tables"
(sem aspas) no final da [mysqld]
seção e salve o arquivo. skip-grant-tables
opção. Terminal
mysql
Comando e Executarmysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit