AWS RDS에 Data Import 하는 법

HD.Y·2024년 2월 7일
0
post-thumbnail

AWS RDS에 Data Import 하기

  • 도커 수업 중, 실수로 기존 진행하던 프로젝트의 RDS로 CREATE 를 하는 상황이 나왔다. 다행히 SQL 파일들을 백업해놔서 Data를 Import 만 하면 되는 문제라서 별 대수롭지 않게 생각했다.

  • 그러다가, Import를 하는 순간 바로 등장하는 에러들... 바로 권한이 없다는 에러였다.

에러 내용

  • User ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation

  • 인터넷에서 찾아보니 파라미터 그룹을 변경하는 방법이 있었다. default로 설정된 파라미터가 아닌, 새로운 파라미터 그룹을 생성하여, log_bin_trust_function_creators 값을 0에서 1로 설정하고, 데이터베이스의 파라미터를 생성한 파라미터로 바꾸면 SUPER 권한을 획득할 수 있다고 나와있는 글이 많았다.

  • 하지만, 그렇게 해서 Data를 Import 하는 순간, 권한 에러는 동일하게 등장하였다. 그래서 더 검색을 하다가 찾은 방법이 있어서 정리해놓는다.

  • 밑에는 sql 파일 예시이다. 여기서 내가 표시한 부분을 주석처리해준뒤 다시 시도하면 정상적으로 Import가 될 것이다.


  • 방법은 백업한 sql 파일을 열어서 특정 4개 줄을 주석 처리해주면 되는 거였다.
-- MySQL dump 10.13  Distrib 8.0.34, for Win64 (x86_64)
--
-- Host:     Database: 
-- ------------------------------------------------------
-- Server version	8.0.33

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-- SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;    🔥주석처리🔥
-- SET @@SESSION.SQL_LOG_BIN= 0;                           🔥주석처리🔥

--
-- GTID state at the beginning of the backup 
--

-- SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';             🔥주석처리🔥

--
-- Table structure for table `Branch`
--

DROP TABLE IF EXISTS `Branch`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `Branch` (
  `branchIdx` int NOT NULL AUTO_INCREMENT,
  `branchAddress` varchar(100) DEFAULT NULL,
  `branchName` varchar(30) DEFAULT NULL,
  `Brand_idx` int DEFAULT NULL,
  PRIMARY KEY (`branchIdx`),
  UNIQUE KEY `UK_h45erxkc1j4l8opvjqqiy8gg4` (`branchAddress`),
  UNIQUE KEY `UK_cgvrh0291250ua04j1ajx1rgw` (`branchName`),
  KEY `FKtnn3wlycc2cy5j4rxa7gv74bi` (`Brand_idx`),
  CONSTRAINT `FKtnn3wlycc2cy5j4rxa7gv74bi` FOREIGN KEY (`Brand_idx`) REFERENCES `Brand` (`brandIdx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `Branch`
--

LOCK TABLES `Branch` WRITE;
/*!40000 ALTER TABLE `Branch` DISABLE KEYS */;
/*!40000 ALTER TABLE `Branch` ENABLE KEYS */;
UNLOCK TABLES;
-- SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;  🔥주석처리🔥
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2024-02-04 17:09:01

  • 앞으로도 AWS의 RDS를 사용할 일이 많을텐데, 사람은 실수하기 마련이기 때문에, 백업도 하고 하지만 별도의 자동백업 설정을 해놓지 않았다면 나처럼 sql 파일들을 그때그때 보관하고 있을 것이다.

  • 그럴때, 해결하기 위해 이 내용을 정리해 놓는다.

profile
Backend Developer

0개의 댓글