A instalação default do MySQL no linux (debian-based) configura a conta do root no banco de dados para ser acessada sem precisar de senha, dessa forma qualquer usuário conectado no servidor consegue obter uma shell do MySQL através do comando:
$ mysql -u root
Não é difícil perceber o quanto essa configuração é ruim e devido à isto, antigamente eu alterava a senha do root via SQL mesmo, como segue abaixo:
$ mysql -u root
mysql> set password for root@localhost = password('NOVA-SENHA');
Query OK, 0 rows affected (0.00 sec)
E isso realmente funciona, pois força que o usuário root tenha que passar a senha NOVA-SENHA para se logar, mas descobri há pouco tempo atrás um comando mais apropriado para isso e que além de definir a senha altera várias outras configurações de segurança:
* Obs1: Eu removi a maioria dos comentários exibidos durante a execução, mas a cada passo são exibidos textos explicando os efeitos das alterações sugeridas pelo utilitário.
* Obs2: Eu já havia executado esse comando antes (quando instalei o meu servidor) portanto a execução exibida abaixo pode
ser um pouco diferente da sua, caso esta seja a primeira vez que você está executando o comando.
# mysql_secure_installation
Enter current password for root (enter for none):
OK, successfully used password, moving on...
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] n
... skipping.
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] Y
... Success!
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
E como o próprio utilitário diz: Sua instalação do MySQL agora deve estar segura
