閱讀110 返回首頁    go 英雄聯盟


RDS MySQL權限問題(錯誤代碼:1227,1725)__MYSQL使用_技術運維問題_雲數據庫 RDS 版-阿裏雲

1. 錯誤信息

2. 錯誤出現的場景

3. 錯誤原因

4. 解決

4.1 去除 DEFINER 子句

4.2 去除 GTID_PURGED 子句

4.3 檢查修改後的文件


,1. 錯誤信息

[Err] 1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation --常見於 RDS MySQL 5.6

ERROR 1725 (HY000) at line 1936: OPERATION need to be executed set by ADMIN --常見於 RDS MySQL 5.5

,2. 錯誤出現的場景

  • ,在創建 存儲過程、函數、觸發器、事件、視圖的時候出現這個錯誤。

  • ,從本地數據庫導出 SQL,在 RDS 上應用該 SQL 的時候出現該錯誤。

  • ,從 RDS MySQL 5.6 實例下載邏輯備份,導入到 RDS 或本地數據庫中。

,3. 錯誤原因

  • ,導入RDS MySQL 實例:SQL 語句中含有需要 Supper 權限才可以執行的語句,而 RDS MySQL不提供 Super 權限,因此需要去除這類語句。
  • 本地 MySQL 實例沒有啟用 GTID。

,4. 解決

,4.1 去除 DEFINER 子句

,,檢查 SQL 文件,去除下麵類似的子句

DEFINER=`root`@`%` 

,在 Linux 平台下,可以嚐試使用下麵的語句去除:

sed -e 's/DEFINER[ ]*=[ ]*[^*]**/*/ ' your.sql > your_revised.sql

,4.2 去除 GTID_PURGED 子句

,,檢查 SQL 文件,去除下麵類似的語句

SET @@GLOBAL.GTID_PURGED='d0502171-3e23-11e4-9d65-d89d672af420:1-373,
d5deee4e-3e23-11e4-9d65-d89d672a9530:1-616234';

,在 Linux 平台,可以使用下麵的語句去除

awk '{ if (index($0,"GTID_PURGED")) { getline; while (length($0) > 0) { getline; } } else { print $0 } }' your.sql | grep -iv 'set @@' > your_revised.sql

4.3 檢查修改後的文件

修改完畢後,通過下麵的語句檢查是否合乎要求。

egrep -in "definer|set @@" your_revised.sql

如果上麵的語句沒有輸出,說明 SQL 文件符合要求。

 

,如問題還未解決,請聯係售後技術支持

 

 

 

 

 

最後更新:2016-07-12 15:28:47

  上一篇:go RDS MySQL 實現讀寫分離__MYSQL使用_技術運維問題_雲數據庫 RDS 版-阿裏雲
  下一篇:go 無法連接RDS for PostgreSQL數據庫的解決方法__PostgreSQL使用_技術運維問題_雲數據庫 RDS 版-阿裏雲