7

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

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

在数据库中,我创建了例程,每个例程都像这样开始:

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

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

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

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

我的服务器现在有 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

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

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

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

提前致谢

4

1 回答 1

6

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

于 2013-05-17T05:42:06.017 回答