创建 MySQL 存储过程时,如何避免使用不断变化的 ip 设置 DEFINER?

Posted

技术标签:

【中文标题】创建 MySQL 存储过程时,如何避免使用不断变化的 ip 设置 DEFINER?【英文标题】:When creating MySQL Stored procedures, how can I avoid the setting the DEFINER with an ip that keeps changing? 【发布时间】:2021-10-15 06:03:41 【问题描述】:

虽然是 MS SQL Server 的老用户,但 mysql 对我来说是新的。我使用 php 和 MySQL 为慈善机构创建了一个 Internet 站点。当我在 MySQL Workbench 中创建存储过程时,我没有使用 DEFINER 参数,因此它们都设置为当时的登录帐户,例如mysqluser@xx.xx.xx.xx 这个IP地址当时是我家的ip,现在改了。我现在无法编辑存储过程,因为我显然没有适当的权限。这仅仅是如何使用 Cpanel 创建 MariaDb 和用户的问题,还是我可以改变我编写存储过程的方式,以便我的 IP 不再重要?我还担心 PHP 登录详细信息可能会以某种方式停止工作。任何有助于缓解这种困惑的帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我不知道你目前的情况有什么解决方案,但回答你的问题

你可以使用:

CREATE DEFINER = 'admin'@'localhost' PROCEDURE account_count()

CREATE DEFINER = 'remoteuser'@'%' PROCEDURE some_func()

只要您可以远程访问主机,您仍然可以说例如 ssh 然后以 'admin'@'localhost' 身份登录 mysql。 或者无论您的 IP 地址如何,都以“remoteuser”身份登录,请注意,如果同名用户的主机名更具体,则通配符主机将不起作用。还需要事先向这些用户授予权限。

对于 DHCP,您还可以使用通配符执行以下操作:

CREATE DEFINER = 'user'@'192.168.%' PROCEDURE do_sth()

【讨论】:

以上是关于创建 MySQL 存储过程时,如何避免使用不断变化的 ip 设置 DEFINER?的主要内容,如果未能解决你的问题,请参考以下文章

在SQLSERVER里面,如何写一个存储过程来创建跟踪?

mysql error (#1064) 存储过程创建错误

mysql中如何创建存储过程

避免mysql注入应该避免都有哪些特殊字符

MySQL数据库的存储过程

MySQL 存储过程,获取使用游标查询的结果集