创建 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?的主要内容,如果未能解决你的问题,请参考以下文章