【问题标题】:Can't alter MySql routine无法更改 MySql 例程
【发布时间】:2012-11-20 01:58:05
【问题描述】:

我正在使用我的主数据库用户登录 Phpmyadmin 页面/工作台远程访问应用程序,但我遇到了权限问题。

这一切都是从我试图改变我存储在数据库中的例程开始的。当试图从工作台应用程序中更改这些例程时,什么都没有发生。 我可以调用这些例程并执行它们,但不能更改或访问脚本。

我在不同的论坛中搜索了几个小时,并获得了有关授予访问命令的一些答案 但后来我又遇到了权限问题,错误 #1142,命令拒绝用户(主用户)。

我真的迷路了,并且已经失去了几个小时的工作来获取我的例程脚本。

最后一点 - 当我与同一个用户连接但来自不同的远程连接(不同的 IP 地址)时,我创建了这些例程。

非常感谢您的帮助。

【问题讨论】:

  • 权限不是授予用户,而是授予用户/主机名组合。更改例程的机会仅授予您的用户在原始位置,而不是在您当前的位置。
  • 嗨 Mayur,感谢您的重播问题是,我不能再在创建这些例程时所在的同一位置,难道没有其他应该能够生成脚本的主用户吗?

标签: mysql database-permissions


【解决方案1】:

这是我如何解决这个问题的解决方案:

1) 将“mysql”数据库添加到用户中,您登录时使用

建议:现在您可以更改函数和过程

2) 为您的用户添加全局权限“SUPER”

建议:否则,如果您保存过程/函数,您将收到以下错误:“ERROR 1227: Access denied; you need (at least one) the SUPER privilege(s) for this operation”

【讨论】:

  • 要了解有关 SUPER 的更多信息,请参阅 this。如果启用了二进制日志记录,则需要超级权限来创建或更改存储的函数
【解决方案2】:

CREATE DEFINER = 'admin'@'localhost' PROCEDURE account_count() SQL 安全调用程序 开始 SELECT '账户数:', COUNT(*) FROM mysql.user; 结束;

参见上面的例子。

您需要使用超级用户登录并根据您的新用户名和主机名更改过程中的定义器参数。创建存储过程的同一定义者可以编辑存储过程。

【讨论】:

    猜你喜欢
    • 2014-04-17
    • 2013-09-06
    • 1970-01-01
    • 2014-03-13
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多