Quero tornar meu escravo MySql somente leitura, procurei e encontrei a opção read_only , mas diz que usuários com super privalges ainda podem escrever (se entendi o texto corretamente), aqui estão as concessões para meu aplicativo:
GRANT RELOAD, PROCESS ON *.* TO 'my_app'@'%' IDENTIFIED BY PASSWORD '*'
GRANT ALL PRIVILEGES ON `my_app`.* TO 'my_app'@'%'
o aplicativo será capaz de escrever para o escravo?
Aqui estão as concessões que você acabou de mencionar
Com base nisso, você não deve ser capaz de escrever no Slave porque SUPER é um privilégio de nível de sistema ( SUPER só aparece em mysql.user como Super_priv ) e não um privilégio de nível de banco de dados ( SUPER não aparece em mysql.db ). O primeiro GRANT carece de privilégio SUPER. O segundo GRANT não tem nenhum contexto de privilégio SUPER.
Ter privilégio SUPER tem muito poder de fogo porque você pode executar o seguinte
Nem todo usuário precisa disso. Dar o privilégio SUPER a qualquer um pode realmente impedir que um DBA faça login no mysql se max_connections for atingido.
Atualizações arbitrárias ou não intencionais em um escravo podem interromper a replicação ou fazer com que um escravo seja inconsistente em relação ao seu mestre. Tornar um slave read_only pode ser útil para garantir que um slave aceite atualizações somente de seu servidor master e não de clientes; ele minimiza a possibilidade de atualizações não intencionais. Defina
read_only=1
em seumy.cnf/my.ini
arquivo para garantir que um escravo aceite atualizações apenas de seu servidor mestre e reinicie seu servidor.Também acho que você deve evitar dar
SUPER
privilégios desnecessários a outros usuários do MySQL por segurança.