Mysqldump 1449 錯誤解決 mysqldump: Got error: 1449


備份數據庫

$ mysqldump -uroot -p db > backup/db.sql

上面的terminal 執行

出現了下面的錯誤

mysqldump: Got error: 1449: The user specified as a definer ('someuser'@'%') does not exist when using LOCK TABLES

 

 

問題解決:

 

原因:

 

主要原因是當時創建 view procedure 或者trigger使用的user 已經被刪除了 這個問題最常見的是數據庫遷移之后

我的問題是我db里面一個view 的創建者沒有了

可視化查看 information_schema.VIEWS 表格中 查看Deafiner 一欄

mysql information_scheme 表中deafiner

沒修改之前是另外一個 deafiner

 

解決方法:

 

1. 修改definer 下面是生成修改

SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", 
table_name, " AS ", view_definition, ";") 
FROM information_schema.views 
WHERE table_schema='your-database-name';

 

修改  `youruser`@`host` 變成你的  'your-database-name'  變成你的db

就會生成一個alter 語句 可視化編輯也可以

修改成比如說 root@localhost 或者 任何一個用戶 (當然你要考慮到這個view 要擁有什么權限,你備份的時候使用的是super 權限 可以不用管那么多,你可以直接備份下來,但是要使用 這個view 就要考慮權限 了,我直接修改成root@localhost 了)

如果是一個procedure 修改 deafiner

 

UPDATE `mysql`.`proc` p SET  = 'user@%' WHERE definer='root@%'

 

具體的也可以先查看 proc 表 然后再修改

 

2. 增加一個definer

錯誤: The user specified as a definer ('root'@'%') does not exist
執行:
GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password';
FLUSH PRIVILEGES;

上面有兩處需要修改成你自己的 一個 'someuser'@'%' 還有一處 'complex-password'  改成你的密碼

 


免責聲明!

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



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