yml によって引き起こされるレコードの落とし穴: java.sql.SQLException: ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワードを使用: YES)

springboot を使用してデータベースに接続する場合、yml を使用して DataSource 情報を設定する場合、次の例外が発生する可能性があります。

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

ログにはパスワードが間違っていることが示されていますが、何度も試した結果、ユーザー名とパスワードが正しいことがわかり、困惑しています。

実際、これは yml ファイルの規則です。文字列を使用する場合は、二重引用符を追加する必要があります。ここで、パスワードは実際には文字列ですが、application.yml ファイルでは、パスワードに二重引用符を追加しません。

# spring的配置
spring:
  application:
    name: springcloud-provider-dept
    #数据源的配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springclouddb01?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
    username: root
    password: 123456 

ここでは、パスワードを二重引用符で囲むだけです。

# spring的配置
spring:
  application:
    name: springcloud-provider-dept
    #数据源的配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springclouddb01?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
    username: root
    password: "123456"   

その後、通常の状態に戻ることが許可されます。

拡大する: 

もちろん、application.yml 形式のファイルに加えて、多くの開発者は application.properties 形式のファイルも使用しますが、この種類のファイルでは文字列に二重引用符を追加する必要があるとは規定されていません。直接書き込んだ場合はエラーは報告されません。

#服务器的端口号
server.port=80

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://119.23.248.141:3306/wolf?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

おすすめ

転載: blog.csdn.net/m0_50370837/article/details/126164976