在管理Informix用户权限前,需确保Linux系统用户与Informix环境正确配置:
adduser命令创建专门用于运行Informix的用户(如informix),并设置密码。sudo adduser informix
sudo passwd informix
informix用户的.bashrc或profile文件,添加以下变量(根据实际安装路径调整):export INFORMIXDIR=/opt/informix # Informix安装目录
export PATH=$PATH:$INFORMIXDIR/bin # 添加Informix命令到PATH
export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$LD_LIBRARY_PATH # 设置库路径
执行source ~/.bashrc使配置生效。使用具有管理员权限的用户(如informix)登录服务器,切换至informix用户并启动Informix服务:
su - informix
oninit -i # 初始化数据库(若未启动)
通过isql工具连接数据库(默认端口9088):
isql -U informix -P password -d sysmaster # 连接系统数据库
通过SQL语句创建用户,可指定密码、默认表空间等参数:
CREATE USER 'newuser' IDENTIFIED BY 'StrongPassword123';
ALTER USER 'newuser' DEFAULT TABLESPACE userspace; -- 设置默认表空间
删除用户前需确认其无未完成事务:
DROP USER 'newuser';
通过系统表查询当前所有数据库用户:
SELECT * FROM sysusers;
授予用户对特定对象的SELECT、INSERT、UPDATE等权限:
GRANT SELECT, INSERT ON schema_name.table_name TO 'newuser';
授予用户对整个数据库的操作权限(如ALL PRIVILEGES):
GRANT ALL PRIVILEGES ON DATABASE mydb TO 'newuser';
创建角色并分配权限,再将角色授予用户,简化权限管理:
CREATE ROLE sales_role; -- 创建角色
GRANT ALL PRIVILEGES ON DATABASE mydb TO sales_role; -- 分配权限给角色
GRANT sales_role TO 'newuser'; -- 将角色授予用户
使用REVOKE语句撤销已授予的权限,语法与GRANT对应:
-- 撤销表级别权限
REVOKE SELECT, INSERT ON schema_name.table_name FROM 'newuser';
-- 撤销数据库级别权限
REVOKE ALL PRIVILEGES ON DATABASE mydb FROM 'newuser';
-- 撤销角色权限
REVOKE sales_role FROM 'newuser';
使用onspassword命令修改用户密码(需管理员权限):
onspassword -u 'newuser' -p NewStrongPassword456
通过sysusers系统表查看用户权限详情:
SELECT * FROM sysusers WHERE username = 'newuser';
启用Informix审计功能,跟踪用户操作(需修改onconfig文件):
AUDIT_ON=1 # 开启审计
AUDIT_FILE_PATH=/opt/informix/audit # 审计日志路径
AUDIT_MASK=ALL # 记录所有操作
重启Informix服务使配置生效:
onmode -ky # 停止服务
oninit -i # 启动服务
ufw)限制Informix端口(默认9088)的访问,仅允许信任IP地址连接:sudo ufw allow from 192.168.1.0/24 to any port 9088/tcp
sudo ufw reload
sysusers表),确保灾难恢复时权限不丢失。