7. Ingres/Net

Ingres/Net 不是 SDK(软件开发工具包)的一部分。只有完整版的 Ingres 才包含它。它允许应用程序(Ingres 实用程序和用户程序)访问其他安装(通常在不同的机器上)的 Ingres 数据库。在运行应用程序的机器上,必须设置客户端 Ingres 安装。我们在 客户端安装 子章节中介绍了客户端的安装。(当然,客户端也可以是完整的 Ingres 安装。)

在本节中,您将了解如何在客户端和服务器上设置 Net,以提供对 DBMS(数据库管理系统)服务器的远程访问。有关 Ingres/Net 的完整描述,我建议您查阅 Ingres/Net 用户指南

但是,在开始使用 Net 之前,我们需要了解一些关于 Ingres 如何验证其用户身份的信息。

7.1. 用户身份验证

我们之前看到,只有有效的 Ingres 用户才能访问 Ingres 安装。Ingres 将其用户的信息保存在 iidbdb 数据库中。但是 Ingres 如何验证用户身份呢?

对于本地访问,答案很简单:Ingres 询问操作系统用户是谁。

此规则有一个例外:某些用户可能会被授予模拟其他 Ingres 用户的特权,当启动 Ingres 实用程序或应用程序时。这就是为什么不是每个 Ingres 用户都必须拥有 OS(操作系统)帐户的原因。然而,此特权只能以全有或全无的方式授予:如果您将其授予某人,他/她将能够模拟任何其他 Ingres 用户,包括 ingres 帐户。因此,永远不要将其授予任何人。

将用户身份验证留给操作系统对于本地访问来说效果很好。但是,想要从远程机器使用数据库的用户呢?他们没有登录到数据库所在的机器(服务器),因此服务器的操作系统不会验证他们的身份(他们甚至可能没有在服务器机器上拥有 OS 帐户)。

Ingres 可以通过两种可能的方式验证这些用户的身份。我们将在接下来的两个小节中介绍它们。

7.2. 登录帐户密码

远程用户身份验证问题的第一个解决方案是要求客户端提供本地(服务器机器的)用户名和密码。然后,Ingres 服务器通过标准的 OS 工具验证这些信息,就像操作系统对真正的本地帐户所做的那样。

在这种情况下,您无需在服务器上的 Net 中设置任何内容。您唯一需要的是 ingvalidpw Ingres 实用程序。它将检查(通过使用getspnamcrypt OS 函数)用户的名称和密码在服务器机器上是否有效。有关如何安装 ingvalidpw,请参阅 ingvalidpw 子章节。

7.3. 安装密码

验证远程用户的另一种方法是服务器接受他们在客户端机器上的用户 ID。在这种情况下,远程用户不必在服务器上的 OS 中已知。

在这种情况下,服务器将如何验证客户端?显然我们需要某种身份验证:任何人都可以创建客户端机器上的 ingres 帐户,然后他/她可以作为 ingres 超级用户连接到安装。

这就是安装密码的用武之地:您在服务器上设置安装密码。然后,您在客户端机器上为您想要允许以他们在客户端上的名称访问服务器的那些帐户设置此密码。

Ingres 服务器然后可以通过简单地检查其安装密码来验证客户端。

7.4. ingvalidpw

由于 ingbuild 显然没有费心安装 ingvalidpw,您必须自己构建它。

以 root 身份登录,将环境设置为 ingres 的环境,然后只需键入

# mkvalidpw
	

此脚本构建并安装 ingvalidpw

7.5. 设置客户端

您将使用 netutil 实用程序在客户端设置 Net,并且在安装密码的情况下,也在服务器上设置。让我们先看看客户端。以您想要授予访问权限的帐户或 ingres 身份登录(如果您想要设置通用访问权限)。然后输入

$ netutil
	

您可以在 netutil 的屏幕上看到三个表。让我们看看每个表包含哪些字段

7.6. 设置服务器

如果您想使用安装密码,您也必须在服务器上配置 Net。在 netutil 中,创建一个具有以下数据的虚拟节点

7.7. 使用 Net

在客户端上使用 netutil 配置 Net 后,并在必要时在服务器上配置 Net 后,使用 netutilTest 菜单选项查看连接是否工作。如果工作,您可以按以下方式访问远程数据库(假设数据库的名称是 test,远程 Ingres 安装的虚拟节点名称是 ingserv1)

$ sql ingserv1::test