Estou usando pt-show-grants para criar todos os meus GRANTS em um novo servidor, mas há muitos GRANTS antigos que se referem a tabelas que não existem mais, então recebo erros quando tento aplicar o arquivo SQL no novo servidor .
Existe uma maneira de remover GRANTS que se referem a tabelas que não existem mais?
Não vejo nenhuma opção no pt-show-grants para fazer esse tipo de restrição. Existem opções para
--only
usuários--ignore
específicos, mas não tabelas. Também não há uma opção automática para ignorar concessões em tabelas inexistentes.Eu também dei uma olhada no código e não parece quebrar as tabelas para examiná-las por qualquer motivo.
Pelo que vale, não vejo nenhum erro quando tento conceder a uma tabela inexistente. Testei no Percona Server 5.6.16:
Você pode me dizer mais alguma coisa sobre sua versão do MySQL e o erro específico que ela produz quando você tenta executar esse script de concessão?
Re seu comentário:
A diferença entre TODOS OS PRIVILÉGIOS e privilégios específicos parece ser deliberada, de acordo com o Bug #10406 O comando Grant all não dá erro embora a tabela não exista .
Se você usar
GRANT CREATE, SELECT ... ON test.notexist TO 'user'@'%'
, então isso funciona. Contanto que você inclua oCREATE
privilégio, ele permite a concessão à tabela inexistente.De qualquer forma, são curiosidades interessantes, mas não respondem à sua pergunta original.
Isso já foi solicitado antes, mas nunca implementado. Foi registrado como um "blueprint" (como um pedido de recurso) aqui: https://blueprints.launchpad.net/percona-toolkit/+spec/pt-show-grants-for-non-existente-tables
Talvez alguém queira implementar um patch e contribuir com o Percona Toolkit?
Eu tenho o mesmo problema. Descarregar dados do CloudSQL e carregá-los em uma instância do AWS Aurora. Os dados parecem estar corretos, mas incluem toneladas de concessões herdadas para tabelas que não existem mais. Aparentemente, isso agora é um erro. Minha solução foi iterar a saída e comentar as concessões herdadas. Abordagem manual horrível, mas me desbloqueou. :(