SpringBoot连接Oracle数据库报ORA-01017: invalid username/password; logon denied

一、报错如下图:

问题描述
lz用sqlplus或者navicat客户端连接oracle数据库正常连接,但是在项目中运行一直报错 invalid username/password; logon denied

在这里插入图片描述

二、lz的环境版本

  • oracle19c
  • jdk1.8
  • ojdbc8.jar

三、解决方式

1、查看数据源配置信息是否用误,一定要仔细检查,如果都没有错,看第2步。

spring:
    datasource:
        druid:
            # 数据源基本配置
            driver-class-name: oracle.jdbc.driver.OracleDriver 
            url: jdbc:oracle:thin:@192.168.1.1:1521:test
            username: xz
            password: xz123456
            #Oracle需要打开注释
			validation-query: SELECT 1 FROM DUAL

2、查看oracle依赖的驱动包,以下是oracle和ojdbc jar驱动包版本对应关系,版本对应后还是报错,请看第3部。

ojdbc(6、8、14) jar包链接

oracle版本Oracle JDBC驱动适用JDK
Oracle 8i
classes111.zip
JDK 1.1
classes12.zip
JDK 1.2
Oracle 9i
classes111.jar
JDK 1.1
classes12.jar
JDK 1.2 和 JDK 1.3
ojdbc14.jar
JDK 1.4
Oracle 10g
classes12.jar
JDK 1.2 和 JDK 1.3
ojdbc14.jar
JDK 1.4 和 JDK 5.0
Oracle 11g
ojdbc5.jar
JDK 5.0
ojdbc6.jar
JDK 6.0
Oracle 12c
ojdbc6.jar
JDK 6.0
ojdbc7.jar
JDK 7.0 和 JDK 8.0
ojdbc8.jar
JDK 8.0
Oracle 18c
ojdbc8.jar
JDK 8.0
Oracle 19c
ojdbc8.jar
JDK 8.0
Ojdbc10.jar
JDK10

3、网上查找资料,有博客说修改用户的密码即可解决报错,lz尝试后,依然报错,所以密码又改回了xz123456,以下是登录navicat客户端后,修改oracle用户名密码的命令

alter user xz identified by xz123;//修改用户名xz的密码为xz123

4、网上查找资料,有博客说可能是用户的权限不够,lz修改用户权限后依然报错,以下是登录navicat客户端后,修改oracle用户权限的命令

#给xz用户授权,connect,resource,dba 分别三种不同操作权限
grant connect,resource,dba to xz

5、因此lz特意写了一个测试数据库连接的测试类,debug运行后,建立数据库连接行还是报 invalid username/password; logon denied错误,说明用户名和密码是没有问题的,代码如下:

package com.rf.springcloud.cloudsystem.modules;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * @description:
 * @author: xz
 */
public class Test {
    public static void main(String[] args) {
        try {
            //装载驱动程序
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //建立数据库连接
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.1:1521:1521:test","xz","xz123456");
            System.out.println("11");
            //释放数据库资源,注意顺序
            con.close();
        }
        catch (Exception e) {
            e.printStackTrace(System.out);
        }
    }

}

6、此方式解决了lz的报错问题,首先了解下oracle数据库url的写法有两种

  • 第一种
//监听sid服务,表示sid为orcl
database.url=jdbc:oracle:thin:@192.168.1.1:1521:orcl
  • 第二种
//监听服务名,表示服务名为test
database.url=jdbc:oracle:thin:@171.xxx.96.xx:xxxx/test
  • 所以发现是自己的sid写错导致出现这个错误,把服务名当做了sid,把test的 “ : ” 改为 “ / ” 访问正常。
  • 以下是正常的数据源配置
spring:
    datasource:
        druid:
            # 数据源基本配置
            driver-class-name: oracle.jdbc.driver.OracleDriver 
            url: jdbc:oracle:thin:@192.168.1.1:1521/test
            username: xz
            password: xz123456
            #Oracle需要打开注释
			validation-query: SELECT 1 FROM DUAL

四、lz报错的原因

  • 服务名和sid混淆使用导致了该错误。
当在Oracle数据库中创建一个新的数据库用户后,可能会遇到ORA-01017: invalid username/password; logon denied错误。这个错误提示表明用户无法通过提供的用户名和密码进行登录。 解决这个问题的方法有以下几种: 1. 确保输入的用户名和密码是正确的,并且没有错别字或者大小写错误。Oracle数据库对用户名和密码是区分大小写的。 2. 确认所使用的连接字符串是否正确。连接字符串包括数据库名、主机名、端口号等信息。确保连接字符串中的信息与数据库实际情况相符。 3. 检查数据库是否处于运行状态。如果数据库没有运行,用户是无法登录的。可以通过命令行或者图形界面来启动数据库。 4. 确保数据库用户已经被正确授权。使用管理员权限登录数据库,并检查是否已经为新创建的用户授予了合适的权限。可以使用GRANT语句来为用户授予权限,例如:GRANT CREATE USER,DROP USER,ALTER USER,CREATE ANY VIEW,DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名。 5. 检查数据库连接配置文件是否正确。在应用程序连接数据库时,需要检查连接配置文件中是否正确地指定了用户名和密码。 通过以上几种方法,您应该能够解决ORA-01017: invalid username/password; logon denied错误,并成功连接Oracle数据库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ORA-01017: invalid username/password; logon denied Oracle数据库错解决方案一-附件资源](https://download.csdn.net/download/weixin_42186728/15514749)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ORACLE数据库错:ORA-01017: invalid username/passwordlogon denied](https://blog.csdn.net/mu_Tchun/article/details/113754274)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小志的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值