
GCP 저장소 내의 SQL 파일에서 MySQL 데이터베이스를 복원하는 데 지쳤습니다. 단계는 데이터베이스 백업 파일을 GCP 저장소에 업로드한 다음 이 SQL 파일을 GCP MySQL 인스턴스 내의 지정된 데이터베이스로 가져오는 것이었습니다. 시간이 좀 걸렸습니다. 예외가 발생했습니다.
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
그런 다음 루트나 다른 사용자에게 최고 권한을 부여하려고 했지만 어쨌든 작동하지 않았습니다. 하지만 최고 권한을 부여할 수 없었습니다. 이 문제를 해결하는 방법을 모르겠습니다. 도움이 많이 될 것입니다. 인정받은
업데이트(2020년 1월 17일): 내가 해결한 문제
예외가 발생한 줄을 찾으려고 노력했습니다.
$ sed -n -e 10870p -e 10871p -e 10872p -e 10873p example.sql
그리고 나는 찾았다
/*!50013 정의자= root
@ localhost
SQL 보안 정의자 */
그런 다음 이 명령을 사용하여 문제가 있는 명령문을 제거했습니다.
고양이 example.sql | sed -e 's/DEFINER= root
@ localhost
//g' > example-CLEANED.sql
그럼 됐어
답변1
권한 이 CURRENT_USER
있어야 SUPER
하지만 현재는 DEFINER
그렇지 않습니다. mysqldump --skip-definer
(최소한의 노력이 될 것입니다) 로 다시 덤프하십시오 . 이것이 옵션이 아니어야 하는 경우 덤프를 편집하여 을 제거하거나 DEFINER
해당 항목을 모두 로 바꾸십시오 CURRENT_USER
. SET
덤프의 특정 문은 결국 문제를 일으킬 수도 있습니다.