Por que não é necessário passar o root para acessar o MariaDB após a atualização para o Ubuntu 16.04?

1

Eu recentemente atualizei um sistema do Ubuntu 14.04 para o 16.04 (mysql Ver 15.1 Distrib 10.0.36-MariaDB) e notei que o root pode entrar sem uma senha, por exemplo: mysql -u root está vazio.

Tentei definir uma nova passagem via mysql com UPDATE mysql.user SET authentication_string = PASSWORD('supersekrit') WHERE User = 'root'; , mas isso não desabilitou a senha vazia. Também tentei executar mysql_secure_installation sem sucesso.

Encontrou uma postagem sobre a configuração do campo plugin na linha do usuário para 'NULO'. Eu fiz isso, mas agora o root não pode fazer login.

Eu segui o link para percona na postagem, que diz que a maneira correta de fazer isso é executar o seguinte: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test'; . Isso resulta em uma mensagem de erro - > ERROR 1064 (42000): You have an error in your SQL syntax...

Não tenho certeza qual é a maneira correta de corrigir isso. alguma idéia?

UPDATE : depois de definir a senha para a conta raiz do mysql, o daemon cron do Ubuntu 16.04 agora está lançando erros durante o logrotate. Parece que esta questão é uma toca de coelho. Esvaziei a senha do root por enquanto até conseguir descobrir o que está funcionando com o logrotate. Yeesh.

error: 'Access denied for user 'root'@'localhost' (using password: NO)'
    
por Server Fault 12.11.2018 / 18:12

1 resposta

2

O motivo pelo qual você pode acessar como usuário root provavelmente se deve ao fato de UNIX autenticação de soquete de domínio está ativada. Como o comando ALTER USER falhou, você provavelmente está executando um MariaDB anterior à 10.2.

Você pode criar um usuário substituto com as mesmas concessões que root copiando as concessões em SHOW GRANTS FOR 'root'@'localhost' :

MariaDB [test]> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION       |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

Por exemplo, se eu quiser que meu usuário chamado backup-root com a senha definida como password , eu execute o seguinte:

CREATE USER 'backup-root'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'backup-root'@'localhost WITH GRANT OPTION;
    
por 12.11.2018 / 21:04

Tags