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

12

Estou usando o script automysqlbackup para despejar meus bancos de dados mysql, mas quero que um usuário somente leitura faça isso para que eu não esteja armazenando minha senha do banco de dados raiz em um arquivo de texto simples.

Eu criei um usuário assim:

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

Quando executo mysqldump (através de automysqlbackup ou 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 subsídios adicionais para o meu usuário somente leitura? Ou só pode root bloquear a tabela information_schema ? O que está acontecendo?

Editar:

GAH e agora funciona. Eu posso não ter executado FLUXO PRIVILEGIOS anteriormente.

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

Editar:

Não, não funciona. Executar mysqldump -u username -p --all-databases > dump.sql manualmente não gera um erro, mas não despeja information_schema. automysqlbackup gera um erro.

    
por stickmangumby 07.03.2011 / 06:59

2 respostas

1

Ops ... da página man de 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 do manual está desatualizada (e gera um aviso) ou automysqlbackup está executando algumas verificações adicionais no dump para information_schema .

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

Editar

Sim, é um bug em automysqlbackup versão 2.5.1 (usando o MySQL 5.1.41 no Ubuntu 10.04) - ele tenta fazer o backup de information_schema quando não deveria.

CORRECÇÃO: Adicione information_schema a DBEXCLUDE na linha 76 do script.

    
por 07.03.2011 / 08:32
4

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

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

    
por 07.03.2011 / 07:08