Respostas:
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.cnfarquivo em qualquer editor de texto. "skip-grant-tables"(sem aspas) no final da [mysqld]seção e salve o arquivo. skip-grant-tablesopção. TerminalmysqlComando e Executarmysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';mysql> FLUSH PRIVILEGES;mysql> exit