当前位置: 首页 > 工具软件 > Informix > 使用案例 >

Informix常用命令

臧欣怿
2023-12-01

Informix创建用户:
Informix 从 11.7 版本开始增加的非系统用户访问数据库的机制,从而让数据库支持两种用户访问方式,数据库内部用户和操作系统用户,解决了之前版本 Informix 用户必须是操作系统账户的问题。
数据库内部用户是指使用 create user 命令创建的用户,通过映射配置,新建的数据内部用户可以映射至操作系统用户。这种方法使系统可以通过映射系统中已存在的除 Informix 和 root 外的其他用户,来访问数据库。
Informix 的系统权限包括连接(connect)、资源(resource)和数据库管理员(DBA)三个权限,通过映射接入的非系统用户对任何数据库都没有任何权限。DBA 可以通过使用 grant 命令有选择的将不同数据库的不同权限赋给非系统用户。

例如:

创建操作系统用户(指定informix用户组)
# useradd  -m test -g informix
# passwd test

授权操作:
# su - informix 
$ dbaccess testdb - 
Your evaluation license will expire on 2022-12-18 00:00:00
Database selected.
> grant dba to test;
Permission granted.

dbaccess testdb - 同于 dbaccess - - 然后再通过 database testdb 切换到对应数据库。

创建好系统用户并授权以后,接下来,就可以通过工具测试该账号、进行远程连接访问了。


关于非操作系统用户的使用:

查看操作系统用户和Informix数据库内部的映射用户(Mapped Users):
# cat /etc/informix/allowed.surrogates 
#Added by informix installer - USERS:daemon
USERS:daemon
#Added by informix installer - USERS:daemon
USERS:daemon
[root@sinodb ~]# 

如果要使用非操作系统用户,Informix >= 11.7的版本才支持,需要进行特殊配置:
# vi /etc/informix/allowed.surrogates 
编辑文件来确定使用哪一个系统用户和组来做为非系统用户的映射用户。如下面例子中将使用 user1 用户来作为非系统用户的映射用户。
USER:dbuser01

修改的内容加载到共享内存,需要执行命令刷新生效配置(重新读取allowed.surrogates并生效配置):
# onmode -cache surrogates
注意:如果该过程失败,之前存储在缓存中的用于映射的用户的信息也会被清掉。则将会直接导致映射用户被禁止。 任何对 /etc/informix/allowed.surrogates 文件修改后,必须执行 onmode -cache surrogates 才能生效。

设置 USERMAPPING 参数:
Informix 的 onconfig 文件中的 USERMAPPING 参数可以控制允许或禁止非系统用户访问数据库该参数可以设置为 OFF, BASIC 和 ADMIN 三种状态
OFF:   只允许操作系统的用户访问数据库,不允许非系统用户访问数据库。默认值为OFF
BASIC: 允许非系统用户访问数据库,但不允许执行对数据库系统的授权用户操作,如 DBSA, DBSSO, AAO 等。即使被映射的用户具有上述权限。
ADMIN: 允许非系统用户访问数据库。且如果被映射的用户为授权用户,则非系统用户也被允许执行授权用户操作。

# vi /opt/sinodb/etc/onconfig
USERMAPPING OFF
默认值是OFF,如果要允许非系统用户访问数据库,需要修改这个配置。

创建数据库内部用户:
CREATE USER username WITH PASSWORD "password";


Informix相关系统表:
SYSUSER:与非系统用户访问相关的数据库。该数据库中包含与非系统用户映射相关的所有信息。其中,起主要作用的表是 sysintauthusers 和 sysusermap。
select * from sysusermap;
该表包含 username 和 surrogate_id 两列。其中,username 列用于存储映射用户的名字。Surrogate_id 为映射用户的 ID 号,该号码是唯一的。

select * from sysintauthusers;
在一个非 Informix 的用户连接数据库前,数据库服务器必须要验证该用户在 sysintauthusers 表中的信用信息。包括系统的和非系统的用户信息都会存储在内。


Informix常用命令:
查询系统表:
select tabname,dbsname from sysmaster:systabnames where dbsname='testdb';
select tabname,dbsname from sysmaster:systabnames where dbsname='testdb' and tabname='test';

查询数据库普通表:
select tabname from systables;

 类似资料: