AWS RDS 備份 MySQL 出現 Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation 該如何解決

因為 RDS 平常使用的使用者並沒有最高權限,所以會出現 Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation 的訊息,所以在備份的時候需要特別處理,以下記錄一下備份的指令跟方法。

匯出 Database

使用 mysqldump 匯出 Database 這邊的範例會匯出資料庫名稱 prod_database 的資料庫到 data-dump.sql

mysqldump -h prod.xxxx.us-east-1.rds.amazonaws.com \
          -u admin -p \
          --column-statistics=0 \
          --no-tablespaces \
          --set-gtid-purged=OFF \
          --databases prod_database \
          > data-dump.sql

匯出後檢查檔案

匯出後檢查一下檔案的開頭確定有備份成功,而我使用的作業系統是 macos11.3 上面也會紀錄

head -n 5 data-dump.sql

-- MySQL dump 10.13  Distrib 8.0.26, for macos11.3 (x86_64)
--
-- Host: 127.0.0.1    Database: prod_database
-- ------------------------------------------------------
-- Server version	5.7.12

匯入 Database

再匯入前先登入 mysql 建立資料庫

mysql -u admin -p

使用 CREATE DATABASE 指令建立資料庫

mysql> CREATE DATABASE prod_database;

Output
Query OK, 1 row affected (0.00 sec)

匯入資料庫

建立完資料庫就可以使用 mysql 指令把資料庫裡面的資料匯入回去對應的資料庫了

mysql -u admin -p prod_database < data-dump.sql