zoukankan      html  css  js  c++  java
  • [Err] 1449

    转载:

    最近在做一个项目,由于服务器切换,所以需要将原有服务器的mysql数据表以及存储过程导入到另一个服务器的mysql数据库中。导入完成之后以为一切是那么的简单,却没有想到总还是出现了一些莫名其妙的问题。

    我在用程序调用存储过程时,总是提示错误:

    1 The user specified as a definer ('test'@'%') does not exist 1449

    查看了自己mysql的用户表后,发现确实没有test这个用户,但是我程序用的是root登录的,所以感觉有些莫名其妙。

    后来通过查资料发现,是由于自己存储过程设置的安全性为definer,而当时的那个数据库存在test这个用户且用的test用户创建的存储过程。

    所以解决方法主要有以下两种:

    保持definer安全性

    1)在navicat上进行修改

    将定义者从test改为在该服务器存在的用户(一般每个服务器都有root@localhost)

    2)通过sql语句修改

    1 mysql>update mysql.proc set DEFINER='root@localhost' WHERE NAME='' AND db='mydb';

    其中,mysql.proc是固定的,definer即要改为的用户名,name为存储过程名,db为数据库名

    将安全性修改为invoker

    1)在navicat上进行修改

    2)通过sql语句进行修改

    1 ALTER PROCEDURE proc_name SQL SECURITY INVOKER 
    2 ALTER PROCEDURE proc_name SQL SECURITY DEFINE

    补充:对于Linux,mysql等工具,操作都需要用户权限,之所以在大多数操作时,没有出现问题是因为默认是root用户,root用户具有最高权限可以操作。

    但当操作某些专有的东西功能时,需要登录对应的用户信息才可以操作。

  • 相关阅读:
    PKU 1185-炮兵阵地(状压DP)
    pku1113-Wall 凸包(安德鲁算法版)
    PTA 6-15 用单向循环链表实现猴子选大王 (20 分)
    PTA 6-14 用单向链表完成多项式运算(35分)
    离散化
    Warshall算法求传递闭包及具体实现
    HDU-6185-Covering(推递推式+矩阵快速幂)
    链式前向星
    HDU Queuing(递推+矩阵快速幂)
    【node】------mongoose的基本使用------【巷子】
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/8428044.html
Copyright © 2011-2022 走看看