문제 설명
mysqldump --add-drop-database --all-database
다음을 포함하는 덤프를 생성합니다.
....
/*!40000 DROP DATABASE IF EXISTS `mysql`*/;
....
이는 예상된 것이며 올바른 동작이라고 생각합니다.
그러나 이 덤프를 mysql 서버에 넣으면(예 cat dump | mysql -u root -pxxxx
: 계정에 SUPER이 있음) 불평합니다.ERROR 3552 (HY000) at line 30: Access to system schema 'mysql' is rejected.
질문
덤프를 수동으로 편집하지 않고도 작동하게 할 수 있는 방법이 있습니까? 아니면 문제가 있는 줄을 제거하기 위한 sed/grep이 유일한 선택입니까?
이는 MySQL 5.6에서 작동했습니다(즉, mysql 데이터베이스 삭제를 허용합니다).
루트 계정에는 다음과 같은 권한이 있습니다SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE, BACKUP_ADMIN, RESOURCE_GROUP_ADMIN, XA_RECOVER_ADMIN
서버 및 클라이언트: MySQL 8.0.12
답변1
데이터베이스 스키마를 덤프/복원할 필요는 없다고 생각합니다 mysql
.
mysql
데이터베이스(또는 다른 데이터베이스)를 건너뛰는 자동화된 방법을 원하는 경우~하지 않다덤프하고 싶습니다) 모든 단일 데이터베이스를 지정하지 않고 다음 질문에 대한 답변을 확인하십시오.이 질문무시하려는 데이터베이스를 제외한 모든 데이터베이스를 자동으로 가져오는 간단한 스크립트입니다.