CentOS环境下Informix用户管理方法
一、系统级用户管理(Informix服务运行用户)
Informix数据库需以专用系统用户(通常为informix)运行,确保数据库文件与进程的安全隔离。
1. 创建系统用户与组
使用groupadd创建informix组,useradd创建同名用户,并指定家目录(如/home/informix)及主目录自动创建:
groupadd -g 1000 informix
useradd -u 1000 -g 1000 -d /home/informix -m informix
2. 设置用户密码
使用passwd命令为用户设置初始密码:
passwd informix
3. 配置环境变量
切换至informix用户,编辑其.bash_profile文件,添加Informix环境变量(路径需根据实际安装位置调整):
su - informix
vi ~/.bash_profile
添加以下内容(示例为安装路径/opt/informix):
export INFORMIXDIR=/opt/informix
export PATH=$INFORMIXDIR/bin:$PATH
export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$LD_LIBRARY_PATH
export ONCONFIG=onconfig.$INFORMIXSERVER # onconfig文件需与服务器名匹配
使环境变量生效:
source ~/.bash_profile
4. 设置文件权限
确保Informix数据目录(如$INFORMIXDIR/data)及关键文件的权限仅informix用户可访问:
chown -R informix:informix /opt/informix
chmod -R 700 /opt/informix/data
二、Informix数据库用户管理
数据库用户用于连接数据库并执行操作,分为系统级命令(onmode)与SQL级命令(CREATE USER/ALTER USER等)两种管理方式。
1. 系统级命令(快速管理)
(1)查看当前连接用户
使用onmode -g users列出所有连接到数据库的用户及状态(如ACTIVE、IDLE):
onmode -g users
(2)添加数据库用户
通过onmode -u adduser命令快速添加用户(需指定用户名与密码):
onmode -u adduser john_doe mypassword
(3)修改用户密码
使用onmode -u chgpasswd命令修改用户密码:
onmode -u chgpasswd john_doe newpassword
(4)删除数据库用户
通过onmode -u deluser命令删除用户:
onmode -u deluser john_doe
2. SQL级命令(灵活管理)
需通过isql工具连接数据库后执行SQL语句,适用于复杂权限配置。
(1)连接数据库
使用isql命令连接(替换为实际用户名、密码及数据库名):
isql -U informix -P mypassword -d sysmaster # sysmaster为系统数据库
(2)创建用户
使用CREATE USER语句创建用户,可指定密码及默认表空间(如userspace):
CREATE USER john_doe IDENTIFIED BY mypassword;
ALTER USER john_doe DEFAULT TABLESPACE userspace;
(3)修改用户信息
使用ALTER USER语句修改密码或默认表空间:
ALTER USER john_doe IDENTIFIED BY newpassword;
ALTER USER john_doe DEFAULT TABLESPACE dataspaces;
(4)删除用户
使用DROP USER语句删除用户(需确保用户无未完成事务或活动连接):
DROP USER john_doe;
(5)查看用户列表
查询sysusers系统表获取所有数据库用户信息:
SELECT * FROM sysusers;
三、Informix用户权限管理
权限管理用于控制用户对数据库对象(如表、数据库)的访问级别,分为授予权限、撤销权限与查看权限三类。
1. 授予权限
(1)数据库级别权限
使用GRANT语句授予用户对整个数据库的操作权限(如ALL PRIVILEGES表示所有权限):
GRANT ALL PRIVILEGES ON DATABASE mydb TO john_doe;
(2)表级别权限
针对特定表授予具体权限(如SELECT、INSERT、UPDATE、DELETE):
GRANT SELECT, INSERT, UPDATE ON TABLE sales.orders TO john_doe;
(3)角色级别权限
通过角色集中管理权限,提升管理效率:
-- 创建角色
CREATE ROLE sales_role;
-- 授予角色数据库权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO sales_role;
-- 将角色授予用户
GRANT sales_role TO john_doe;
2. 撤销权限
使用REVOKE语句撤销已授予的权限,语法与GRANT相反:
(1)撤销数据库级别权限
REVOKE ALL PRIVILEGES ON DATABASE mydb FROM john_doe;
(2)撤销表级别权限
REVOKE SELECT, INSERT ON TABLE sales.orders FROM john_doe;
(3)撤销角色权限
REVOKE sales_role FROM john_doe;
3. 查看权限
查询sysusers系统表可查看用户基本信息,若需详细权限信息,可通过查询sysprivileges系统表(需管理员权限):
SELECT * FROM sysusers WHERE username = 'john_doe';
-- 查看详细权限(需管理员权限)
SELECT * FROM sysprivileges WHERE grantee = 'john_doe';
四、密码管理
1. 使用onspassword命令
onspassword是Informix专用密码修改工具,需指定用户名与新密码:
onspassword -u john_doe -p newpassword
2. 使用SQL命令
通过ALTER USER语句可直接修改用户密码(需用户有ALTER USER权限或由管理员操作):
ALTER USER john_doe IDENTIFIED BY newpassword;
注意事项
- 权限最小化:仅授予用户完成工作所需的最小权限,避免过度授权。
- 定期审计:通过
onmode -g users与SELECT * FROM sysusers定期检查用户活动,及时清理闲置账户。 - 备份配置:修改用户或权限前,备份
onconfig文件及数据库关键表(如sysusers)。 - 版本兼容性:不同Informix版本(如11.5、12.1)的命令可能存在差异,建议参考对应版本的官方文档。