ปัญหา : คุณกำลังพยายามนำเข้าข้อมูล (โดยใช้ไฟล์ mysqldump) ไปยังฐานข้อมูล mysql ของคุณ แต่ดูเหมือนว่าคุณไม่ได้รับอนุญาตให้ดำเนินการดังกล่าว
วิธีแก้ไข : สมมติว่าข้อมูลของคุณถูกโอนย้ายเมล็ดพันธุ์และอัปเดตในฐานข้อมูล mysql ของคุณถ่ายภาพโดยใช้ mysqldump และส่งออกไปยังไฟล์
mysqldump -u [username] -p [databaseName]
จากเอกสาร mysql:
GTID - ตัวระบุธุรกรรมทั่วโลก (GTID) คือตัวระบุเฉพาะที่สร้างขึ้นและเชื่อมโยงกับแต่ละธุรกรรมที่กระทำบนเซิร์ฟเวอร์ต้นทาง (หลัก) ตัวระบุนี้ไม่เฉพาะกับเซิร์ฟเวอร์ที่กำเนิดเท่านั้น แต่ยังไม่ซ้ำกันในเซิร์ฟเวอร์ทั้งหมดในการตั้งค่าการจำลองแบบที่กำหนด มีการแมปแบบ 1 ต่อ 1 ระหว่างธุรกรรมทั้งหมดและ GTID ทั้งหมด
--set-gtid-purged = OFF SET @@ GLOBAL.gtid_purged จะไม่ถูกเพิ่มลงในเอาต์พุตและ SET @@ SESSION.sql_log_bin = 0 จะไม่ถูกเพิ่มลงในเอาต์พุต สำหรับเซิร์ฟเวอร์ที่ไม่ได้ใช้ GTID ให้ใช้ตัวเลือกนี้หรืออัตโนมัติ ใช้ตัวเลือกนี้สำหรับเซิร์ฟเวอร์ที่ใช้ GTID เท่านั้นหากคุณแน่ใจว่าชุด GTID ที่ต้องการมีอยู่แล้วใน gtid_purged บนเซิร์ฟเวอร์เป้าหมายและไม่ควรเปลี่ยนแปลงหรือหากคุณวางแผนที่จะระบุและเพิ่ม GTID ที่ขาดหายไปด้วยตนเอง
หลังจากนั้นเชื่อมต่อกับ mysql ของคุณด้วยรูทผู้ใช้ให้สิทธิ์ล้างและตรวจสอบว่าสิทธิ์ผู้ใช้ของคุณได้รับการอัปเดตอย่างถูกต้อง
mysql -u root -p
UPDATE mysql.user SET Super_Priv='Y' WHERE user='johnDoe' AND host='%';
FLUSH PRIVILEGES;
mysql> SHOW GRANTS FOR 'johnDoe';
+
| Grants for johnDoe |
+
| GRANT USAGE ON *.* TO `johnDoe` |
| GRANT ALL PRIVILEGES ON `db1`.* TO `johnDoe` |
+
ตอนนี้โหลดข้อมูลและการดำเนินการควรจะได้รับอนุญาต
mysql -h [host] -u [user] -p[pass] [db_name] < [mysql_dump_name].sql
DEFINER
เมื่อผู้ใช้ที่เข้าสู่ระบบไม่มีSUPER
สิทธิ์ (ซึ่งตัวเองไม่ได้รับอนุญาตใน RDS) จะอนุญาตให้เพิ่มสิทธิ์ตามอำเภอใจ - โปรแกรมที่จัดเก็บไว้จะทำงานด้วยข้อมูลประจำตัวและสิทธิ์ของผู้ใช้DEFINER
(ตรงข้ามกับผู้ใช้ที่โทร - ของพวกเขาINVOKER
) ตามค่าเริ่มต้น นอกจากนี้ในความผิดพลาดของเซิร์ฟเวอร์