Mysql CREATE DEFINER

Mar*_*mba 6 mysql stored-procedures

这是我在这里的第一个问题,老实说,经过长时间的调查,我没有回答.

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

在数据库内部,我创建了例如以下开始的例程:

CREATE DEFINER='localuser02'@'192.168.0.5' PROCEDURE 'Createuser'
Run Code Online (Sandbox Code Playgroud)

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'
Run Code Online (Sandbox Code Playgroud)

但我不知道该怎么办.


谢谢你的回答.

对于通配符,我理解像使用像你说的那样百分之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
Run Code Online (Sandbox Code Playgroud)

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

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

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

提前致谢

udo*_*dog 5

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