Estamos vendo algo peculiar sobre a maneira como o MySQL faz a resolução de nomes -- ou pelo menos peculiar para nós (-:
Temos dois centros de dados, A e B. A é primário, B é usado em caso de failover. Temos dois servidores MySQL em A, db1 e db2, atrás de um balanceador de carga na configuração ativa(db1)-passiva(db2). O "serviço" MySQL é acessado como db.domain.com
, que recebe o nome de c do balanceador de carga, lb.domain.com
.
Ao olhar para a mysql.db
tabela (e similarmente em mysql.user
), vemos entradas como:
Host Db User
lb.domain.com app1 user1
lb.domain.com app2 user2
lb.domain.com app3 user3
Como alguém entra db.domain.com
na Host
coluna em vez do lb.domain.com
?
Se você deseja conceder acesso aos bancos de dados do aplicativo aos mesmos usuários, faça o seguinte:
Se você deseja substituir 'lb.domain.com' por 'db.domain.com', faça o seguinte:
De uma chance !!!
ATUALIZAÇÃO 2011-10-26 12:43 EDT
Talvez você queira tentar mascarar o domínio da seguinte maneira:
ou substituindo o domínio:
Dessa forma, qualquer autenticação de usuário do domínio domain.com seria aceitável.
ATUALIZAÇÃO 2011-10-26 18:05 EDT
Pessoalmente, odeio usar nomes DNS em mysql.user e mysql.db
Você pode realmente fazer com que o mysqld ignore o uso do DNS da seguinte maneira
Primeiro, substitua todos os nomes DNS por endereços IP físicos. Além disso, substitua os nomes de domínio por netblocks IP (em vez de *.domain.com usando 10.20.30.%)
Em seguida, adicione o seguinte a /etc/my.cnf e reinicie o mysql
A resolução de DNS deve, então, tornar-se uma coisa do passado.