É normal que alguém possa acessar o MySQL como root sem digitar a senha, embora a senha esteja configurada?

2

Acabei de instalar o MySQL (Ver 14.14 Distrib 5.7.22) no Ubuntu 18.04 e descobri algo estranho:

Eu instalei o MySQL e usei mysql_secure_installation para definir uma senha para root, mas assim que eu estiver logado no SSH com qualquer usuário com sudo-rights, eu posso simplesmente acessar o MySQL sem ser solicitado a digitar uma senha via mysql -u root ou via mysql -u root -p & basta clicar em ENTER (quando solicitado "Digite a senha:").

Isso é normal?

Eu sei de versões anteriores que eu sempre tive que digitar uma senha quando eu queria acessar o MySQL, mesmo com o sudo.

    
por xinxin 19.05.2018 / 18:46

2 respostas

6

Os pacotes MySQL do Ubuntu (que são baseados no Debian) usam por padrão o auth_socket plugin. Com este plug-in ao conectar-se a partir da máquina local, nenhuma senha é necessária, mas o servidor identifica o usuário do sistema operacional e corresponde a esse usuário. Então, se você é root no sistema e login você se torna root. Isso evita ter que configurar uma senha de root do MySQL primeiro.

Veja também o link

    
por 20.05.2018 / 00:24
5

Você deve executar SHOW GRANTS FOR 'root'@'localhost';

Se mostrar esta linha nos resultados:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION

e não esta linha:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' WITH GRANT OPTION

significa que o usuário root é autenticado automaticamente pela credencial do soquete unix. Se você não quiser isso, você pode emitir um comando GRANT manual (não atire no pé fazendo isso) que irá substituir o anterior, por exemplo:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'mysecurepassword' WITH GRANT OPTION;

Agora o mysql perguntará uma senha, mas poderá ser usado por qualquer usuário capaz de acessar o soquete unix (assim, por padrão, usar mysql -u root -p sem ser root, mas é claro saber a senha). Você tem que ponderar qual deles é mais seguro.

Eu não sei porque o mysql_secure_installation não explica isso.

    
por 19.05.2018 / 21:00