Esta pequena atualização surpreendeu. Em um upgrade do MaxScale 2.0 para 2.1, o MaxScale alterou o endereço de ligação padrão de IPv4 para IPv6. Isso é mencionado nas notas de versão como esta:
O MaxScale 2.1.2 adicionou suporte para endereços IPv6. A interface padrão a que os ouvintes se ligam foi alterada do endereço IPv4 0.0.0.0 para o endereço IPv6 ::. Para vincular ao endereço IPv4 antigo, adicione address=0.0.0.0 à definição do ouvinte. – Upgrading MariaDB MaxScale from 2.0 to 2.1
O resultado é bastante significativo, porém, porque a autenticação no MySQL é geralmente baseada em host ou em IP, com permissões concedidas, como esta:
$ SET PASSWORD FOR 'xxx'@'10.0.0.1' = PASSWORD('your_password');
Observe o uso explícito do endereço IP ali.
Agora, após uma atualização do MariaDB 2.1, isso será padrão para a autenticação de um endereço IPv6, o que lhe dará a seguinte mensagem de erro;
$ mysql -h127.0.0.1 -P 3306 -uxxx -pyour_password ERROR 1045 (28000): Access denied for user 'xxx'@'::ffff:127.0.0.1' (using password: YES)
Observe como 127.0.0.1 se transformou em :: ffff: 127.0.0.1? Esse é um endereço IPv4 que está sendo encapsulado em um endereço IPv6. E ele fará com que a autenticação MySQL potencialmente falhe, dependendo de como você tenha atribuído seus usuários e permissões.
Para corrigir isso, você pode:
- Fazer o downgrade do MaxScale 2.1 para o 2.0 (adicione os repositórios 2.0.6 para o seu sistema operacional e faça o downgrade do o MaxScale).
- Adicionar a configuração address=0.0.0.0 à configuração do seu ouvinte em /etc/maxscale.cnf.
No caso dos seus listeners do MaxScale, isso deve ser suficiente para resolver o problema:
$ cat maxscale.cnf [listener_1] type=listener service=... protocol=... address=0.0.0.0 port=...
Espero que isso ajude!
***
Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/mariadb-maxscale-2-1-defaulting-ipv6/