애플리케이션을 실행할 때 MySQL 연결 오류 발생
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
원인 추정
1. MySQL root 계정 권한 문제 → GRANT ALL PRIVILEGES로 해결 시도
2. 비밀번호 설정 문제 → ALTER USER로 해결 시도
3. MySQL 버전 및 인증 방식 문제 → caching_sha2_password 이슈 확인
4. Spring Boot 설정 문제 (application.properties vs Config 중복)
5. 파일 내부 설정 충돌 가능성 발견 → 최종 해결!
최초 오류가 Access denied였기 때문에, root 계정의 권한 문제를 의심하고 해결 시도
ALTER USER 'root'@'localhost' IDENTIFIED BY '1q2w3e4r!';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
해결되지 않음 → 다른 원인 가능성 확인 필요
MySQL 8.0 이상에서는 기본 인증 방식이 caching_sha2_password로 설정됨
mysql_native_password로 변경 시도
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1q2w3e4r!';
FLUSH PRIVILEGES;
🚨 여전히 해결되지 않음 → 문제는 설정 충돌 가능성이 큼!

application.properties 설정이 올바른지 확인
spring.datasource.url=jdbc:mysql://localhost:3306/schedule_db?serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=1q2w3e4r!
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
✅ 설정 문제 없음 → 그래도 해결되지 않음
모든 설정을 다시 확인하는 과정에서, Spring Boot의 Config 클래스와 application.properties 설정이 중복된 것을 발견
application.properties에서 데이터베이스 연결을 설정했지만 @Configuration을 사용한 별도의 Config 클래스에서도 동일한 데이터베이스 설정을 수동으로 정의 Spring Boot는 자동으로 application.properties 설정을 사용하기 때문에,
추가로 Config 클래스를 정의하면 설정 충돌이 발생하여 이전에 설정해둔 값을 덮어쓰게 될 가능성이 높음!
✅ 불필요한 Config 클래스를 삭제하고, application.properties 설정만 사용
// ❌ 삭제된 불필요한 Config 클래스
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
return DataSourceBuilder.create()
.url("jdbc:mysql://localhost:3306/schedule_db?serverTimezone=Asia/Seoul")
.username("root")
.password("1q2w3e4r!")
.driverClassName("com.mysql.cj.jdbc.Driver")
.build();
}
}
✅ Spring Boot가 자동으로 설정을 적용하므로 application.properties만 유지
spring.datasource.url=jdbc:mysql://localhost:3306/schedule_db?serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=1q2w3e4r!
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
이제 정상적으로 MySQL 연결이 가능해짐!
✔ 초기 문제: Access denied 오류로 인해 MySQL 권한 문제를 의심했지만, 해결되지 않음
✔ 최종 원인: Config 클래스와 application.properties의 설정 중복으로 인한 충돌
✔ 해결 방법: Config 클래스 삭제 후, application.properties 설정만 유지하여 문제 해결