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



虽然长期MS SQL Server用户,MySQL对我来说是新的。我用PHP和MySQL为慈善机构创建了一个网站。当我在MySQL Workbench中创建存储过程时,我没有使用DEFINER参数,所以它们都被设置为当时登录的帐户,例如mysqluser@xx.xx.xx.xx IP地址是当时我的家庭IP,现在已经改变了。我现在无法编辑存储过程,因为我显然没有相应的权限。这仅仅是如何使用Cpanel来创建MariaDb和用户的问题,还是我可以改变我如何编写存储过程,以便我的IP不再重要?我还担心PHP登录细节可能会以某种方式停止工作。如果您能帮助消除这种困惑,我将不胜感激。

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

你可以使用:

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()

最新更新