使用CREATE USER命令创建SQL*Plus登录用户,并指定密码(将your_username、your_password替换为实际值):
CREATE USER your_username IDENTIFIED BY your_password;
根据用户需求授予最小化权限(避免过度授权),常见权限组合包括:
GRANT CREATE SESSION, CREATE TABLE TO your_username;
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE PROCEDURE TO your_username;
若为用户分配了预定义角色(如CONNECT、RESOURCE),可通过ALTER USER命令设置默认角色,使用户在连接时自动激活:
ALTER USER your_username DEFAULT ROLE CONNECT, RESOURCE;
执行FLUSH PRIVILEGES命令强制数据库重新加载权限表:
FLUSH PRIVILEGES;
使用新用户登录SQL*Plus,尝试执行授权操作(如创建表),确认权限是否生效:
sqlplus your_username/your_password@localhost:1521/ORCLCDB
-- 连接成功后执行测试命令
CREATE TABLE test_table (id NUMBER, name VARCHAR2(50));
编辑用户主目录下的.sqlplusrc文件(如/home/your_username/.sqlplusrc),添加以下内容,使SQL*Plus启动时自动提示输入用户名:
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Sep 27 14:48:34 2021
Enter user-name:
保存后,运行sqlplus命令时将不再显示默认版本信息,直接提示输入用户名和密码。
在.sqlplusrc文件中添加连接字符串,简化远程连接命令:
DEFINE _CONNECT_IDENTIFIER = "your_service_name"
之后可使用简化的命令连接:
sqlplus your_username/your_password@your_service_name
SHOW GRANTS命令,查看已授予的权限。GRANT命令补充所需权限(如GRANT CREATE TABLE TO your_username;)。ALTER USER ... DEFAULT ROLE ...)或手动激活角色(SET ROLE role_name;)。仅授予用户完成工作所需的最低权限(如普通用户无需DROP TABLE权限),减少安全风险。
限制.sqlplusrc文件的访问权限(如chmod 600 ~/.sqlplusrc),防止敏感信息(如密码)泄露。
定期检查用户权限分配情况(如SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'YOUR_USERNAME';),及时回收不必要的权限。
若允许远程连接,配置防火墙开放1521端口(Oracle默认端口),并使用tnsping命令测试网络连通性:
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload
tnsping your_service_name