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

Guess you like

Origin blog.csdn.net/m0_50370837/article/details/126164976