Mysql CREATE DEFINER

时间:2013-05-16 18:31:29

标签: mysql stored-procedures

这是我在这里的第一个问题,老实说,经过长时间的调查,没有答案,我就做到了。

我创建了一个在CentOS Web服务器上运行的Intranet Web应用程序,该应用程序使用另一个本地服务器(总是CentOS)作为mysql数据库。

在数据库中,我已经创建了例如这样开始的例程:

CREATE DEFINER='localuser02'@'192.168.0.5' PROCEDURE 'Createuser'

IP 192.168.0.5是安装应用程序的服务器的IP。

直到这里一切正常,应用程序正在运行。 几天前,由于运行应用程序的服务器是旧的,要添加另一台服务器(我的意思是商品服务器),我想的是在它们之间进行流量平衡。

现在我已正确设置两个服务器来运行应用程序,问题在于SQL DEFINER只有一个IP。

我的服务器现在有192.168.0.5和192.168.0.6。

理论上我的新DEFINER应该是这样的:

CREATE DEFINER='localuser02'@'192.168.0.5, 192.168.0.6' PROCEDURE 'Createuser'

但我不知道如何继续。


感谢您的回答。

对于通配符,我理解像使用百分之类似于你所说的192.168。%或者像eggyal 192.168.0建议的那样。% 我这样做的问题和担忧是否有效?由于我的网络分布如下:

192.168.0.1 - router
192.168.0.2 - voip phone
192.168.0.3 - voip phone
192.168.0.4 - firewall
192.168.0.5 - Server 01
192.168.0.6 - Server 02
192.168.0.7 - SQL Server
192.168.0.8 - LAN Printer
192.168.0.9 - First pc
192.168.0.10 - Second pc

我的问题是将IP从192.168.0.1保留到xxx.10保留,如果我在SQL上添加通配符可能与地址冲突我的意思是DEFINER尝试在例如voip电话或打印机或防火墙上进行身份验证这两个服务器完全没有?

还有第二个问题,有可能列出多个IP更加整洁:

CREATE DEFINER='localuser02'@'192.168.0.5, 192.168.0.6' PROCEDURE 'Createuser'

提前致谢

1 个答案:

答案 0 :(得分:4)

除非您还指定了SQL SECURITY INVOKER,否则DEFINER子句控制在执行时使用的帐户。当您的代码当前已编写时,无论哪个用户在运行时执行代码,它都将在DEFINER中指定的安全上下文中执行。如果您需要为定义者指定更广泛的地址范围,请在主机部分中单独使用%,或使用类似192.168的内容。%