天天看點

連接配接mysql 時出現1227_關于RDS MySQL的權限問題(錯誤代碼:1227,1725)

關于RDS MySQL的權限問題(錯誤代碼:1227,1725)

RDS MySQL報錯完整的資訊如下:

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

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

一般來說以下的操作會引起出現這個錯誤:

1. 從本地資料庫導出SQL,在RDS上應用該SQL的時候會導緻出現這個錯誤。

2. 在建立 存儲過程、函數、觸發器、事件以及視圖的時候出現這個錯誤。

3. 從RDS MySQL 5.6執行個體下載下傳邏輯備份時,導入到RDS或本地資料庫中。

原因是SQL語句中含有對root或其他使用者的引用,但是在實際SQL執行過程中無相應使用者的權限,是以需要去掉這類語句。

具體方法如下所示:

1. 檢查SQL檔案,去除下面類似的語句:

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

d5deee4e-3e23-11e4-9d65-d89d672a9530:1-616234';

在Linux平台,使用下面的語句能夠去除

sed '/GTID_PURGED/N;s/,\n/,/' user_db.sql | grep -iv 'set @@global' > user_db_revised.sql

修改後再進行測試使用。

2. 檢查SQL檔案,去掉下面類似的子句:

DEFINER=`root`@`%`

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

sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/ user.sql > user_revised.sql