2
respostas

Privilégios para o backup

Ao executar no mysqldump apareceu erro informando o seguinte: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

Pesquisei e encontrei essa resposta: mysqldump requires at least the SELECT privilege for dumped tables, SHOW VIEW for dumped views, TRIGGER for dumped triggers, LOCK TABLES if the --single-transaction option is not used, and (as of MySQL 8.0.21) **PROCESS if the --no-tablespaces option is not used. Certain options might require other privileges as noted in the option descriptions**.

Pelo que entendi se náo foi usado o parâmetro --no-tablespaces no momento do dump, o usuário que irá gerar esse dump precisa ter esse privilégio. O interessante é que ao usar o workbench, dentro das aministrative roles o 'perfil' backupAdmin sugerido pelo workbench não da o 'tick' no privilégio execute.

Quando criei um outro usuário para testar apenas com os privilégios, sugeridos pelo perfil BackupAdmin, o mesmo erro acima apareceu. OU SEJA, esse privilégio PROCESS se faz necessário caso seu backup não tenha usado '--no-tablespaces' como parâmetro, que na verdade não sei exatamente o que seria não declarar isso no momento do backup. Se puderem dar uma explanação sobre esses privilégios seria ótimo. vlw

2 respostas

Para completar ainda mais minha dúvida, procurei o que seria esse privilégio PROCESS especificamente.

***The PROCESS privilege controls access to information about threads executing within the server (that is, information about statements being executed by sessions). Thread information available using the SHOW PROCESSLIST statement, the mysqladmin processlist command, and the INFORMATIONSCHEMA.PROCESSLIST table is accessible as follows:

With the PROCESS privilege, a user has access to information about all threads, even those belonging to other users.

Without the PROCESS privilege, nonanonymous users have access to information about their own threads but not threads for other users, and anonymous users have no access to thread information.***

Não ajudou em nada, o que os threads teriam a ver com os tablespaces do dump?!

Olá, Gleiser, tudo bem?

Desde já peço desculpas pela demora em obter retorno.

Você está correto sobre as afirmações do erro "Access denied; you need (at least one of) the PROCESS privilege(s) for this operation". Ele ocorre porque a partir da versão MySQL 8.0.21, o mysqldump exige ao menos o privilégio PROCESS para executar operações de dump que envolvam tablespaces.

O privilégio PROCESS no MySQL controla o acesso às informações sobre as threads em execução no servidor, ou seja, informações sobre as declarações (statements) que estão sendo executadas. Esse privilégio permite que um usuário veja os processos em execução no banco de dados. Os usuários que possuem esse privilégio, conseguem ter acesso às todas as threads em execução, mesmo as que pertencem a outros usuários. Já os usuários que possuem autenticação, mas que não possui esse privilégio, só possui acesso a própria thread.

Enquanto a sua dúvida sobre a relação entre threads e os tablespaces. Elas possuem uma relação indireta, pois a execução de consultas e transações pelas threads pode envolver leitura e gravação de dados nos tablespaces correspondentes às tabelas envolvidas.

Para criar um usuário e conceder esse privilégio você pode usar o seguinte comando:

CREATE USER 'seu_usuario'@'localhost' IDENTIFIED BY 'sua_senha';
GRANT SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, PROCESS ON *.* TO 'seu_usuario'@'localhost';

Gleiser, abaixo deixo o link das documentações onde você pode consultar e explorar mais sobre esse conteúdo:

Espero ter ajudado.

Caso surja alguma dúvida, fico à disposição.

Abraços !

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!