Mysql導入數據庫提示 ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for


今天再復制服務器上數據庫的時候(使用Mysql Workbench )提示1227錯誤,

數據庫版本5.7.18,復制到的數據庫也是5.7.18。

總結一下網上的幾種方法:

方法一:

最直觀的翻譯是說權限的問題,一般是mysql的用戶創建后沒給權限,

select * from mysql.user where user='root'

查看權限后發現super_priv是為N,修改后導入還是無效;

方法二:

很多人是因為跨版本導入出現1227,然后說刪除

SET @@SESSION.SQL_LOG_BIN= 0;

就能實現,我這邊試了也不行;

最后是我的解決方法:

網上的方法我都試過還是導入不進去,

然后把提示中錯誤的地方都刪掉,最后導入成功了- -,

其實和方法二很像,刪除紅框的內容,黃框是添加的內容(把SET相關的都刪了,就能導入成功了):

刪除的前面2處地方是在sql的最開始,

SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED='55a52aed-75e6-11e8-971f-246e96771c90:785864-787738,
569cf9ca-b336-11e8-be4e-501d93ecc0b8:1-10040';

最后一次在sql的尾部。

SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;

 

 

 

常見問題處理之ERROR 1227 數據導入報錯

 

 

使用mysqldump將本地數據導出,導入rds MySQL時。導入過程中可能會遇到以下錯誤:
ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
 
1.問題原因:MySQL導入用戶的權限問題。
處於安全考慮,rds MySQL的最高權限用戶root是沒有super權限的,當前自建用戶也不能有super權限。但是用戶執行導入的sql中,包含需要super權限的語句,所以會報錯。
如果源庫開啟了GTID特性,使用mysqldump 導出數據時,沒有添加選項--set-gtid-purged=OFF,導出的sql中就有存在以下需要super權限執行的語句:
SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED=´18f9a804-343b-11e5-a21d-b083fed01601:1-2´;
2.解決辦法
辦法1:導出語句中添加選項--set-gtid-purged=OFF重新導出,再導入即可。
mysqldump -uroot  -p -h192.168.0.50 -P8635 --databases test --set-gtid-purged=OFF --master-data=2--single-transaction --order-by-primary -r dump.sql
辦法2:使用source方式導入,這種方式即使權限問題報錯,剩余sql語句仍可繼續執行,不影響最終數據。
mysql>source  /tmp/dump.sql
注意:sql文件的路徑和權限
 
 
 mysql -hdb.com -P50003 -uroot -p'2sd7' open -e "source /root/open.sql"
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM