zoukankan      html  css  js  c++  java
  • 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'  改成你的密码

    慢慢沉淀自己
  • 相关阅读:
    CF432D Prefixes and Suffixes
    CF126B Password
    如何实现输入历史记录功能
    python工作中总结
    今 天看到我十年前的一篇技术文章,想到不知不觉学编程十多年了,,
    现在互联网好多bug 想到都烦
    【图论】割点
    【DP】【P1941】【NOIP2014D1T3】飞扬的小鸟
    【线段树】【P3740】 [HAOI2014]贴海报
    【单调队列】【P1714】 切蛋糕
  • 原文地址:https://www.cnblogs.com/martinding/p/7457701.html
Copyright © 2011-2022 走看看