Informix数据库需以专用系统用户(通常为informix)运行,确保数据库文件与进程的安全隔离。
使用groupadd创建informix组,useradd创建同名用户,并指定家目录(如/home/informix)及主目录自动创建:
groupadd -g 1000 informix
useradd -u 1000 -g 1000 -d /home/informix -m informix
使用passwd命令为用户设置初始密码:
passwd informix
切换至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
确保Informix数据目录(如$INFORMIXDIR/data)及关键文件的权限仅informix用户可访问:
chown -R informix:informix /opt/informix
chmod -R 700 /opt/informix/data
数据库用户用于连接数据库并执行操作,分为系统级命令(onmode)与SQL级命令(CREATE USER/ALTER USER等)两种管理方式。
使用onmode -g users列出所有连接到数据库的用户及状态(如ACTIVE、IDLE):
onmode -g users
通过onmode -u adduser命令快速添加用户(需指定用户名与密码):
onmode -u adduser john_doe mypassword
使用onmode -u chgpasswd命令修改用户密码:
onmode -u chgpasswd john_doe newpassword
通过onmode -u deluser命令删除用户:
onmode -u deluser john_doe
需通过isql工具连接数据库后执行SQL语句,适用于复杂权限配置。
使用isql命令连接(替换为实际用户名、密码及数据库名):
isql -U informix -P mypassword -d sysmaster # sysmaster为系统数据库
使用CREATE USER语句创建用户,可指定密码及默认表空间(如userspace):
CREATE USER john_doe IDENTIFIED BY mypassword;
ALTER USER john_doe DEFAULT TABLESPACE userspace;
使用ALTER USER语句修改密码或默认表空间:
ALTER USER john_doe IDENTIFIED BY newpassword;
ALTER USER john_doe DEFAULT TABLESPACE dataspaces;
使用DROP USER语句删除用户(需确保用户无未完成事务或活动连接):
DROP USER john_doe;
查询sysusers系统表获取所有数据库用户信息:
SELECT * FROM sysusers;
权限管理用于控制用户对数据库对象(如表、数据库)的访问级别,分为授予权限、撤销权限与查看权限三类。
使用GRANT语句授予用户对整个数据库的操作权限(如ALL PRIVILEGES表示所有权限):
GRANT ALL PRIVILEGES ON DATABASE mydb TO john_doe;
针对特定表授予具体权限(如SELECT、INSERT、UPDATE、DELETE):
GRANT SELECT, INSERT, UPDATE ON TABLE sales.orders TO john_doe;
通过角色集中管理权限,提升管理效率:
-- 创建角色
CREATE ROLE sales_role;
-- 授予角色数据库权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO sales_role;
-- 将角色授予用户
GRANT sales_role TO john_doe;
使用REVOKE语句撤销已授予的权限,语法与GRANT相反:
REVOKE ALL PRIVILEGES ON DATABASE mydb FROM john_doe;
REVOKE SELECT, INSERT ON TABLE sales.orders FROM john_doe;
REVOKE sales_role FROM john_doe;
查询sysusers系统表可查看用户基本信息,若需详细权限信息,可通过查询sysprivileges系统表(需管理员权限):
SELECT * FROM sysusers WHERE username = 'john_doe';
-- 查看详细权限(需管理员权限)
SELECT * FROM sysprivileges WHERE grantee = 'john_doe';
onspassword命令onspassword是Informix专用密码修改工具,需指定用户名与新密码:
onspassword -u john_doe -p newpassword
通过ALTER USER语句可直接修改用户密码(需用户有ALTER USER权限或由管理员操作):
ALTER USER john_doe IDENTIFIED BY newpassword;
onmode -g users与SELECT * FROM sysusers定期检查用户活动,及时清理闲置账户。onconfig文件及数据库关键表(如sysusers)。