在spring boot中捕获用户名和密码错误的SQL连接错误

Posted

技术标签:

【中文标题】在spring boot中捕获用户名和密码错误的SQL连接错误【英文标题】:Catch the SQL connection error for wrong username and password in springboot 【发布时间】:2019-12-31 12:21:33 【问题描述】:

我有一个与 mysql 连接的简单 springboot 应用程序,MySQL 凭据存储在 application.properties 中。

如果数据库用户名/密码不正确,我想记录这个错误。

所以我在我的主课上做了一个 try-catch

 try
    
        SpringApplication.run( DashboardUtilServerApplication.class, args );
    
    catch(Exception ex)
    
        if(ex.getCause() instanceof HibernateException)
        
        //Line 11
      

代码将出现在第 11 行,但我如何确定此异常是由于错误的数据库凭据导致的,错误的数据库凭据是否存在某些特定异常。

我只是想向用户表明数据库凭据不正确。如果在 application.properties 中 DB 的用户名/密码不正确。

【问题讨论】:

你可以使用SQLException的getMessage方法,它会给出类似'invalid username/password' 为mysql连接创建@Configuration类,并定义Datasource@Bean,捕获异常。 "java.sql.SQLSyntaxErrorException: 拒绝用户访问" 您使用的通用 catch 子句以及稍后的自省是灾难的根源。在尝试执行您想要实现的目标之前,最好的问题是为什么要通知应用程序的最终用户数据库凭据错误?这样的功能有什么用例? 【参考方案1】:

我认为没有特定的异常可以检查以确定这一点。但是,您可以检查异常消息以确定它是否是无效的凭据问题,方法是检查消息是否包含“拒绝访问”或任何确切消息。

【讨论】:

以上是关于在spring boot中捕获用户名和密码错误的SQL连接错误的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot / Spring Security中的错误401未经授权

Spring Boot(XML配置)和Jasypt集成

带有undertow servlet容器的spring-boot应用程序中的“没有共同的密码套件”错误

Spring Boot Security:编码密码看起来不像 BCrypt

Spring Boot和MySql - 无法使用新的服务数据库用户名/密码

Spring Boot中如何保护DataSource的用户名和密码?