当前位置: 首页 > news >正文

老Java项目访问提示orcale 19c ORA-01017: 用户名/口令无效; 登录被拒绝

orcale 19c ORA-01017: 用户名/口令无效; 登录被拒绝

因为是个老Java项目,jdk1.6,用的ojdbc14,

项目数据库xml配置:

<connection-url>jdbc:oracle:thin:@//127.0.0.1:1521/orclpdb</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>	
<user-name>EFMP</user-name>
<password>EFMP</password>--!!注意大小写

 orclpdb 这里是我使用了PDB数据库查询的服务名,可根据本地情况做相应调整

show pdbs;


之所以说用户名注意大小写是因为

19C设置sec_case_sensitive_logon参数为false会导致除sys用户以外的所有用户都无法以原来的密码登录,登录时提示:密码不对

打开cmd窗口,此处也可以用sqlplus / as sysdba

修改方法


C:\Users\Administrator>sqlplus EFMP/EFMP@//127.0.0.1:1521/orclpdbSQL*Plus: Release 19.0.0.0.0 - Production on 星期一 9月 29 16:37:33 2025
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle.  All rights reserved.上次成功登录时间: 星期一 9月  29 2025 14:38:50 +08:00连接到:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0SQL>
SQL> show parameter caseNAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
sec_case_sensitive_logon             boolean
TRUE
alter system set sec_case_sensitive_logon=false;

启动项目后提示:

ORA-01017: 用户名/口令无效; 登录被拒绝

一开始我以为是ojdbc的问题于是在本地写了个测试类,显示能登录但是提示用户名密码错误

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class TestOracle {// Oracle数据库连接信息private static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";// 使用服务名连接方式(新版本推荐)// private static final String DB_URL = "jdbc:oracle:thin:@//localhost:1521/ORCLPDB";private static final String USER = "EFMP";private static final String PASS = "EFMP";public static void main(String[] args) {Connection conn = null;Statement stmt = null;try {// 1. 注册JDBC驱动Class.forName(JDBC_DRIVER);// 2. 打开连接System.out.println("连接Oracle数据库...");conn = DriverManager.getConnection(DB_URL, USER, PASS);// 3. 执行查询System.out.println("创建Statement对象...");stmt = conn.createStatement();String sql = "SELECT employee_id, first_name, last_name, salary FROM employees";ResultSet rs = stmt.executeQuery(sql);// 4. 处理结果集while(rs.next()) {// 通过字段名获取int empId = rs.getInt("employee_id");String firstName = rs.getString("first_name");String lastName = rs.getString("last_name");double salary = rs.getDouble("salary");// 输出数据System.out.print("员工ID: " + empId);System.out.print(", 姓名: " + firstName + " " + lastName);System.out.println(", 薪资: " + salary);}// 5. 关闭资源rs.close();stmt.close();conn.close();} catch(SQLException se) {// 处理JDBC错误se.printStackTrace();} catch(Exception e) {// 处理Class.forName错误e.printStackTrace();} finally {// 关闭资源try {if(stmt != null) stmt.close();} catch(SQLException se2) {} // 什么都不做try {if(conn != null) conn.close();} catch(SQLException se) {se.printStackTrace();}}System.out.println("Oracle数据库操作完成!");}
}

解决方法:

1.修改数据库sqlnet.ora文件(在我机器上的位置是:C:\Orcale\WINDOWS.X64_193000_db_home\network\admin\sqlnet.ora),后面新增两行:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION=8

2.重新设置密码(因为步骤1修改了安全策略,需要通过修改密码来适配新的安全策略以让我们的老代码能也能正常访问):这一步很重要!!!我就是卡在这一步,最后抱着试试的心态结果成功了!!!!以为第一步不用重启就能生效,但是事实并不是。
打开控制台连接到数据库输入:
alter user [用户名] identified by [密码];
这是在重启一下本地项目就OK啦!
原文链接:https://blog.csdn.net/qq_38597400/article/details/105174470

http://www.dtcms.com/a/423123.html

相关文章:

  • 目标检测:yolov7算法在RK3588上部署
  • Maya Python: 安装pymel
  • 全景网站开发待遇南宁logo设计公司
  • 北京工商局网站怎么做增资网易代理暴雪
  • 制造行业订单全生命周期管理数仓项目实战
  • 《深度学习入门:基于Python的理论与实现》第7章 卷积神经网络笔记
  • 网络游戏编程 - Socket 技术以及应用 - 上 -《了解游戏网络基础知识》
  • 珠海建网站的网络公司网站名称格式
  • 舆情观察类文章写作指南与新浪舆情通应用
  • C语言——深入理解函数声明定义和调用访问
  • 网站开发大约多少钱制作一个网站的步骤是什么
  • RabbitMQ (一)简单模式
  • 阿里巴巴 Java 开发手册 v1.2.0
  • Leetcode+Java+单调栈
  • Word和WPS文字如何从特定的页开始编号(页码)?
  • EDSR模型
  • thinkphp做中英文网站网站跟app区别
  • 6. 数据库设计基础知识
  • 【nginx平滑升级演示】
  • 桥梁缺陷检测数据集:腐蚀、剥落、渗透等5类,3k+图像,yolo标注
  • 上交提出单图生成3D场景方法SceneGen:单图输入,多资源输出,3D 合成性能飙升的“秘密武器”!
  • 百度验证网站济南网络科技公司
  • NO5.硼:火箭专家
  • 细化处理refinement process
  • 第四部分:VTK常用类详解(第120章 vtkWarpTo变形到类)
  • Day01_Linux移植基础
  • 工控网做网站维护吗免费网站建站申请
  • kcwebplus可视化框架
  • JVM如何管理直接内存?
  • 【完整源码+数据集+部署教程】医疗设备显示器图像分割系统: yolov8-seg-C2f-SCConv