
Cansei de restaurar um banco de dados MySQL a partir de um arquivo sql dentro do armazenamento GCP, a etapa foi fazer upload do arquivo de backup do meu banco de dados para o armazenamento GCP e, em seguida, importei esse arquivo sql para um banco de dados especificado dentro da instância MySQL do GCP, demorou um pouco, ocorreu a exceção que foi
Import error: exit status 1 ERROR 1227 (42000) at line 10871: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
então tentei conceder superprivilégio ao root ou a qualquer outro usuário, mas não funcionou de qualquer maneira, mas não me permitiu conceder superprivilégio, não tenho ideia de como resolver esse problema, qualquer ajuda seria muito apreciado
Atualização (17 de janeiro de 2020): o problema que resolvi
Tentei encontrar a linha que ocorreu exceção
$ sed -n -e 10870p -e 10871p -e 10872p -e 10873p exemplo.sql
e eu encontrei
/*!50013 DEFINER= root
@ localhost
SQL DEFINER DE SEGURANÇA */
então usei este comando para remover a declaração que está com problema
gato exemplo.sql | sed -e 's/DEFINER= root
@ localhost
//g' > exemplo-CLEANED.sql
então pronto
Responder1
O CURRENT_USER
deveria ter SUPER
privilégios, mas o atual DEFINER
não. Jogue fora novamente com mysqldump --skip-definer
(seria o menor esforço). Se isso não for uma opção, edite o dump e remova o DEFINER
, ou substitua todas as suas ocorrências por CURRENT_USER
. Certas SET
declarações no dump também podem causar o problema.