Como crio um usuário MySQL somente leitura para fins de backup com o mysqldump?

13

Estou usando o automysqlbackupscript para despejar meus bancos de dados mysql, mas quero ter um usuário somente leitura para fazer isso, para não armazenar minha senha do banco de dados raiz em um arquivo de texto sem formatação.

Eu criei um usuário assim:

grant select, lock tables on *.* to 'username'@'localhost' identified by 'password';

Quando executo mysqldump(através automysqlbackupou diretamente), recebo o seguinte aviso:

mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'information_schema' when using LOCK TABLES

Estou fazendo errado? Preciso de doações adicionais para meu usuário somente leitura? Ou só pode roottrancar a information_schemamesa? O que está acontecendo?

Editar:

GAH e agora funciona. Talvez eu não tenha executado o FLUSH PRIVILEGES anteriormente.

Como um aparte, com que frequência isso ocorre automaticamente?

Editar:

Não, não funciona. A execução mysqldump -u username -p --all-databases > dump.sqlmanual não gera um erro, mas não despeja o information_schema. automysqlbackupgera um erro.

stickmangumby
fonte
Ops ... da página de manual para mysqldump: mysqldump não despeja o banco de dados INFORMATION_SCHEMA. Se você nomear esse banco de dados explicitamente na linha de comando, o mysqldump o ignorará silenciosamente. Parece que a página de manual está desatualizada (e gera um aviso) ou automysqlbackupestá executando algumas verificações adicionais no dump information_schema. Não tenho certeza qual é, mas não está relacionado a concessões de usuários.
precisa
1
Não é uma questão de SUBSÍDIO. Você não precisa fazer o backup do arquivo Information_SCHEMA (consulte: dev.mysql.com/doc/refman/5.0/en/information-schema.html )
SmallClanger 7/11
1
Para adicionar o que o SmallClanger disse, o INFORMATION_SCHEMA é um banco de dados virtual, reconstruído toda vez que o MySQL é reiniciado, portanto não faz sentido fazer backup porque você não pode restaurá-lo.
31711 John Gardeniers

Respostas:

4

Essas permissões devem ser tudo o que é necessário para o mysqldump.

Como você concedeu LOCK TABLES e está com erro em LOCK TABLES, parece que as permissões são inconsistentes. Você já executou um FLUSH PRIVILEGES?

Shane Madden
fonte
1

Ops ... da página de manual para mysqldump:

mysqldump does not dump the INFORMATION_SCHEMA database. If you name that database explicitly on the command line, mysqldump silently ignores it

Parece que a página de manual está desatualizada (e gera um aviso) ou automysqlbackupestá executando algumas verificações adicionais no dump information_schema.

Não tenho certeza qual é, mas não está relacionado a concessões de usuários.

Editar

Sim, é um bug na automysqlbackupversão 2.5.1 (usando o MySQL 5.1.41 no Ubuntu 10.04) - ele tenta fazer backup information_schemaquando não deveria.

CORRECÇÃO: Adicione information_schemaà DBEXCLUDElinha 76 do script.

stickmangumby
fonte
Não é uma questão de SUBSÍDIO. Você não precisa fazer o backup do arquivo Information_SCHEMA (consulte: dev.mysql.com/doc/refman/5.0/en/information-schema.html )
SmallClanger 7/11
Para adicionar o que o SmallClanger disse, o INFORMATION_SCHEMA é um banco de dados virtual, reconstruído toda vez que o MySQL é reiniciado, portanto não faz sentido fazer backup porque você não pode restaurá-lo.
31711 John Gardeniers