Recuperando a senha perdida do MySQL
Dica publicada em Linux / Banco de Dados
Recuperando a senha perdida do MySQL
1 - Parar o serviço do MySQL:
Linux:
# /etc/init.d/mysql stop
Windows: Iniciar -> Programas -> Ferramentas Administrativas -> Serviços -> MySQL -> Parar
2 - Iniciar o banco sem as tabelas de privilégios:
Linux:
# /usr/sbin/mysqld --skip-grant-tables
Windows: <caminho da instalação do mysql>\bin\mysqld-nt.exe --skip-grant-tables
3 - Trocar a senha de root perdida
3.1 - Via MySQLadmin
Linux:
# /usr/bin/mysqladmin -u root password 'minhanovasenha'
Windows: <caminho da instalação do mysql>\bin\mysqladmin -u root password 'minhanovasenha'
Após isto recarregar a tabela de privilégios:
Linux:
# /usr/bin/mysqladmin -h localhost flush-privileges
Windows: <caminho da instalação do mysql>\bin\mysqladmin -h localhost flush-privileges
3.2 - Via MySQL
Conecte ao servidor mysqld com:
Linux:
# /usr/bin/mysql -u root mysql
Windows: <caminho da instalação do mysql>\bin\mysql -u root mysql
Dispare os seguintes comandos no cliente mysql:
mysql> UPDATE user SET Password=PASSWORD('minhanovasenha') WHERE User='root';
mysql> FLUSH PRIVILEGES;
3.3 - Inserir um novo usuário com permissão total no MySQL, e acesso a partir de qualquer host (versão 4.x)
Digite o seguinte comando no MySQL:
mysql> INSERT INTO user VALUES('%', 'usuário', PASSWORD('senha'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');
Outras dicas deste autor
SMTP Auth com Postfix e SASL (sem domínios virtuais)
Monitorando o uso de processador de servidores (locais e remotos) com o Nagios + NRPE
Leitura recomendada
MySQL no Slackware 14.1 - Configuração inicial
Dump e importação de banco em uma linha
Comentários
boa dica, quebrou um galho, valeu
de todas que vi a mais detalhada, parabens...
Bom....
Quando executei este comando:
# /usr/sbin/mysqld --skip-grant-tables deu o seguinte erro.
Can't create test file /var/lib/mysql
Dei permissão: chmod 777 /var/lib/mysql
Até aí, tudo bem!
Mas quando executo este comando: ~$ sudo /usr/bin/mysqladmin -u root password *****
Me retorna o seguinte erro:
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
Já pesquisei em outros tópicos e não consegui encontrar a solução. Tentei conectar sem usar senha e retorna o mesmo erro.
O problema é que esqueci a senha. Fiquei um tempo sem usar e esqueci....
Quando executei este comando:
# /usr/sbin/mysqld --skip-grant-tables deu o seguinte erro.
Can't create test file /var/lib/mysql
Dei permissão: chmod 777 /var/lib/mysql
Até aí, tudo bem!
Mas quando executo este comando: ~$ sudo /usr/bin/mysqladmin -u root password *****
Me retorna o seguinte erro:
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
Já pesquisei em outros tópicos e não consegui encontrar a solução. Tentei conectar sem usar senha e retorna o mesmo erro.
O problema é que esqueci a senha. Fiquei um tempo sem usar e esqueci....
putz...
Como eu procurei na net por um tuto como esse!
Finalmente consegui alterar/criar uma senha no MySQL!
:]
Nunca usei MySQL, e nao havia começado ainda justamente por causa desse bendita senha
:/
Valeu mesmo rootkit!
:D
Como eu procurei na net por um tuto como esse!
Finalmente consegui alterar/criar uma senha no MySQL!
:]
Nunca usei MySQL, e nao havia começado ainda justamente por causa desse bendita senha
:/
Valeu mesmo rootkit!
:D
Interessante sua dica de como recuperar a senha. Apenas um detalhe nos tópicos 3.2 e 3.3:
- Para dar permissões aos usuários no MySQL, eu prefiro utilizar a seguinte forma:
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY '_senha_do_root_' WITH GRANT OPTION;
Com isso, estou dando total permissão no servidor MySQL ao usuário root. Ele terá permissão até mesmo nas bases que serão criadas após este comando. Se fosse necessário dar privilégios totais a outro usuário, basta trocar o "root@localhost" pelo "usuario@host". Usando o comando desta forma, evito a manipulação direta das tabelas do MySQL e não há a necessidade de digitar vários "Y"...
Detalhe: para limitarmos os outros usuários à algumas operações:
GRANT INSERT,UPDATE,DELETE ON nome_banco.* TO usuário@localhost IDENTIFIED BY '_senha_' WITH GRANT OPTION;
Com isso, apenas as operações de inserção, atualização e deleção serão permitidas para este usuário...