在 Ubuntu 上涉及 Oracle(通常是 Oracle Database)权限设置,一般分三层来说:系统用户权限、Oracle 用户/组权限、数据库内部权限。下面按常见场景说明。
Oracle 不能装在 root 下,必须用专用用户:
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba oracle
sudo passwd oracle
目录权限示例(以 /u01 为例):
sudo mkdir -p /u01/app/oracle
sudo chown -R oracle:oinstall /u01
sudo chmod -R 775 /u01
✅ 原则:Oracle 软件目录属主必须是
oracle:oinstall
如果 oracle 用户需要执行系统命令:
sudo visudo
添加:
oracle ALL=(ALL) NOPASSWD:ALL
(生产环境建议只给必要命令)
sqlplus / as sysdba
CREATE USER testuser IDENTIFIED BY password;
GRANT CONNECT, RESOURCE TO testuser;
常用权限说明:
CONNECT:能登录RESOURCE:建表、序列等DBA:管理员(慎用)ALTER USER testuser
DEFAULT TABLESPACE users
QUOTA UNLIMITED ON users;
GRANT SELECT, INSERT, UPDATE ON scott.emp TO testuser;
SELECT * FROM user_sys_privs;
SELECT * FROM user_tab_privs;
原因:
dba 组解决:
sqlplus / as sysdba
检查:
id oracle
groups oracle
必须是:
uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)
权限更简单:
docker exec -it oracle_db sqlplus sys/密码@//localhost:1521/ORCLCDB as sysdba
我可以直接给你一套可复制的命令。