Habilitar acesso sem senha ao MySQL

15

Como posso excluir minha senha do MySQL? Eu não quero ter uma senha para conectar ao banco de dados. Meu servidor está executando o Ubuntu.

Yosef
fonte
Por uma questão de interesse, por que você não quer uma senha?
John Gardeniers
Por exemplo, encontro erros quando executo "dpkg-reconfigure phpmyadmin". Para com erro 1045 com acesso negado root @ localhost "password: no" terminando.
Lacek

Respostas:

29

Pessoalmente, acho que é melhor definir uma senha e salvá-la em /root/.my.cnf:

Primeiro:

mysqladmin -u root password 'asdfghjkl'

Em seguida, edite o arquivo .my.cnf da raiz:

[client]
password = asdfghjkl

Certifique-se de chmod 0600 .my.cnf.

Agora você tem uma senha, mas não é mais solicitada. Minha instalação padrão do servidor MySQL é uma senha exclusiva totalmente aleatória para cada servidor MySQL, salva no arquivo .my.cnf como este.

freiheit
fonte
1
Concordo plenamente com a configuração do seu ambiente para autenticar você automaticamente e remover a senha.
Zoredache
2
Você pode precisar de aspas em torno dessa senha no .my.cnf. Não funcionou para mim sem.
user67641
1
@ user67641: Pode depender da versão e do que está na sua senha ... As minhas são longas sequências aleatórias de alfanuméricos (sem caracteres especiais) e não precisam de aspas.
freiheit 12/03
2
Se você precisar criar /root/.my.cnf, vale a pena definir explicitamente 0600 permissões para garantir que nenhum outro usuário possa bisbilhotar. Na maioria das vezes, os usuários normais não podem entrar no / root, mas a paranóia extra é quase sempre garantida.
Dale Anderson
Faltando mv ./+%Y%m%d. $ Db.sql $ OUTPUT` entre mysqldump e gzip
Siddharth
9

Se você possui uma senha definida para o MySQL, siga as instruções em Recuperar senha root do MySQL e defina sua senha como nula:

Para 5.7.6 e posterior

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

Para 5.7.5 e versões anteriores

update user set password=PASSWORD("") where User='root';

* precisa de uma reinicialização do banco de dados (consulte as instruções no link) para que isso entre em vigor.

sudo service mysql restart
Stefan Lasiewski
fonte
neste caso, não se esqueça de "liberar privilégios";
Marco Ramos
@ meeyosef - marque uma resposta como respondida se resolver seu problema (clique na marca de seleção verde abaixo do número de votos).
Jneves #
Eu pensei que poderia usar senha vazia apenas para soquete Unix e não loopback, mas não é possível. O unix_socketplugin faz uma coisa um pouco diferente.
bacia
9

Sim, menos senhas podem ser boas. Mas não basta abrir o banco de dados para todos.

via unix_socket:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

Isso fornece a você acesso mysql sem senha para um usuário root conectado localmente. Btw. este é o padrão nas versões recentes do ubuntu / debian.

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

Slides explicativos: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .

Matthias Bloch
fonte
2
Bem-vindo ao SF! Adorável primeira resposta: clara, um bom resumo, um link para uma exploração mais aprofundada e acrescenta algo ao corpus de respostas existente. Estou encantado por ser o seu primeiro voto positivo, e espero que você fique por aqui para escrever mais respostas como esta.
MadHatter
Os slides estão bem, mas esta é a documentação real: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD
5

Você também pode fazer:

grant all privileges on *.* to 'root'@'localhost' identified by '';
jkff
fonte
1

Tenho certeza de que, por padrão, não há senha se você for o usuário administrador e acessá-lo localmente. Você está encontrando algo diferente disso?

Isto funciona?

#> mysqladmin -u root password ''
djangofan
fonte