【问题标题】:How to allow any user to run stored procedure in shared hosting mysql如何允许任何用户在共享主机mysql中运行存储过程
【发布时间】:2020-03-07 07:33:24
【问题描述】:

共享主机服务器上托管的 MySQL 数据库中创建存储过程时,会自动添加该过程的定义器:

CREATE DEFINER=teq_user1@My IP Address程序dpr_tax(在...

这限制了仅从该 IP 调用此过程。 我们需要允许某些用户调用这个过程,而不管 IP。

我试过了:
授予执行程序 teq_acc.dpr_tax TO 'teq_user1'@'%';

授予执行程序 teq_acc.dpr_tax 到 'teq_user1'@'localhost';

但收到以下错误:
授予命令拒绝用户 'teq_user1'@'我的 IP 地址'

【问题讨论】:

  • 我认为您正在寻找DEFINER = CURRENT_USER ...然后您可以或多或少简单地将 EXECUTE priv 授予可以使用它的 MySQL 用户.. 但不能 100% 确定我不确定你是如何使用这个的..
  • @RaymondNijland ,感谢您的支持,问题不是用户而是IP。它专用于用户,但应该来自特定 IP,我无法授予 user@% 权限,因为我在共享环境中。
  • 打开 MySQL 或允许来自 Internet 上的任何 IP 的连接,无论如何,这是您正在寻找的一个坏主意。您需要某种网关(基于套接字或 Web 服务),它位于您的应用程序和 MySQL 服务器..
  • @RaymondNijland .. 这可以通过 SSH 或其他方式完成吗?

标签: mysql stored-procedures shared-hosting


【解决方案1】:

我找到了解决方法:
"DEFINER=teq_user1@My IP Address"
当您从通过 "Remote SQL"(如 MySQL Workbench)连接的客户端应用程序创建存储过程时添加。但如果您从 PHPmyAdmin 重新创建该过程,Definer 将是:
"DEFINER=teq_user1@localhost" 可以从任何 IP 运行。

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2012-11-15
    相关资源
    最近更新 更多