Oracle 21c XE:SqlPlus可连接但SQL Developer提示用户名/密码无效
解决Docker部署Oracle 21c XE后SQL Developer无法连接新用户的问题
以下是针对该问题的排查和解决步骤:
核对SQL Developer连接参数
确保连接配置完全正确:- 连接类型选择Basic
- 主机填
localhost(本地Docker)或宿主机IP(远程Docker) - 端口填Docker映射的宿主机端口(默认是
1521,需确认启动容器时的-p参数,比如-p 1521:1521) - 服务名/SID填
XE(Oracle 21c XE默认服务名和SID都是这个,部分SQL Developer版本需优先选择服务名而非SID)
检查用户身份验证配置
在sqlplus中执行以下语句确认用户的验证类型:SELECT username, authentication_type FROM dba_users WHERE username = '你的用户名';若结果不是
PASSWORD,重新创建用户并显式指定密码验证:CREATE USER 你的用户名 IDENTIFIED BY 你的密码 DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS; GRANT CONNECT, RESOURCE TO 你的用户名;确认Docker端口映射正确性
查看容器的端口映射状态:docker ps --format "table {{.Names}}\t{{.Ports}}"确保Oracle 1521端口已正确映射到宿主机,若映射了非默认端口,SQL Developer中需填写对应宿主机端口。
验证密码大小写敏感性
Oracle 12c+默认开启密码大小写敏感,确认SQL Developer中输入的密码大小写与创建用户时完全一致。若需关闭大小写敏感,以sysdba身份执行:ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL; ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON=FALSE;之后重启Docker容器:
docker restart 你的容器名检查用户账号状态
在sqlplus中执行以下语句查看账号状态:SELECT username, account_status FROM dba_users WHERE username = '你的用户名';若状态为
LOCKED或EXPIRED,执行解锁并重置密码:ALTER USER 你的用户名 ACCOUNT UNLOCK; ALTER USER 你的用户名 IDENTIFIED BY 你的密码;
内容的提问来源于stack exchange,提问作者sjMalik
相关产品推荐
相关产品推荐

