Estamos implementando o MaxScale como um proxy de banco de dados entre nosso aplicativo e o banco de dados hospedado no AWS Aurora MySQL.
Configurei o MaxScale e verifiquei que todos os servidores podem se conectar e, quando me conecto do servidor de aplicativo ao ponto de extremidade do proxy via CLI, tudo funciona:
mysql -h proxy.end.point -u admin -p
Isso funciona muito bem como esperado e abre uma conexão. Posso chamar use db_name;
e alterar bancos de dados sem problemas, por exemplo:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 76
Server version: 8.0.32 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> use db_name;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [db_name]>
No entanto, o que é super bizarro é que quando especifico o db_name
como um argumento cli, recebo um erro de permissão:
mysql -h proxy.end.point -u admin -p db_name
ERROR 1044 (42000): Access denied for user 'admin'@'ip.of.data.base' to database 'db_name'
Não tenho certeza se isso é um problema com o admin
usuário mysql ou se é alguma nuance com o MaxScale, mas estava curioso para saber se alguém tem alguma informação.
Para referência, estou usando um maxscale
usuário como proxy e ele tem as seguintes permissões:
GRANT SHOW DATABASES ON *.* TO `maxscale`@`%`
GRANT SELECT ON `mysql`.* TO `maxscale`@`%`
GRANT SELECT ON `mysql`.`columns_priv` TO `maxscale`@`%`
GRANT SELECT ON `mysql`.`db` TO `maxscale`@`%`
GRANT SELECT ON `mysql`.`procs_priv` TO `maxscale`@`%`
GRANT SELECT ON `mysql`.`proxies_priv` TO `maxscale`@`%`
GRANT SELECT ON `mysql`.`tables_priv` TO `maxscale`@`%`
GRANT SELECT ON `mysql`.`user` TO `maxscale`@`%`
Aqui está o conteúdo do meu /etc/maxscale.cnf
arquivo:
[maxscale]
threads=auto
debug=enable-statement-logging
[db_writer]
type=server
address=rds-writer-endpoint.rds.amazonaws.com
port=3306
[db_reader]
type=server
address=rds-reader-endpoint.rds.amazonaws.com
port=3306
[Read-Write-Service]
type=service
router=readwritesplit
servers=db_writer,db_reader
user=maxscale
password=maxscale_password
[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
port=3306
Eu instalei a versão maxscale 24.02.4
.
Qualquer ajuda é bem-vinda. Obrigado!
Então, depois de uma depuração completa, parece que o problema era o nome de usuário.
Sempre que eu me conectava com o nome de usuário,
admin
recebia erros de permissão, mas criei um novo usuário com permissões idênticas e consegui me conectar com sucesso.Então, alguma combinação de MaxScale e conexão com o nome de usuário
admin
estava causando o problema.A solução foi criar um usuário com permissões idênticas e conectar-se a ele.