인프런 커뮤니티 질문&답변

알함님의 프로필 이미지
알함

작성한 질문수

재고시스템으로 알아보는 동시성이슈 해결방법

프로젝트 생성

프로젝트를 처음 시작시에 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 오류가 발생합니다.

해결된 질문

작성

·

1.7K

2

spring:
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/stock_example
    username: root
    password: 1234

# JPA 쿼리가 어떻게 나가는지
logging:
  level:
    org:
      hibernate:
        SQL: DEBUG
        type:
          descriptor:
            sql:
              BasicBinder: TRACE

yml 설정은 위와 같이 하고 docker 이미지 확인시에 아래와 같이 작동하고 있습니다.

 

igwangmin@igwangmin-ui-MacBookPro ~ % docker ps -a              
CONTAINER ID   IMAGE     COMMAND                   CREATED      STATUS          PORTS                               NAMES
03d3fae9019b   mysql     "docker-entrypoint.s…"   4 days ago   Up 16 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

 

DB 조회 시에도 아래와 같이 나오는 데 혹시 제가 놓친 부분이 있을까요?

 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| stock_example      |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

답변 2

0

최상용님의 프로필 이미지
최상용
지식공유자

알함님 안녕하세요.

답변이 늦어져서 죄송합니다.
혹시 현재는 해결이 되셨을까요 ?
해결이 되시지 않으셨다면 댓글 부탁드립니다.

알함님의 프로필 이미지
알함
질문자

늦게나마 답을 드려 죄송합니다. 아직 해결 되지 않은 상태입니다.

최상용님의 프로필 이미지
최상용
지식공유자

콘솔에서 root 계정으로 use stock_example 명령어를 실행하면 접속이 되실까요?

알함님의 프로필 이미지
알함
질문자

로컬에서 원래 접속되던거에서 먼저 확인을 하기 위해서

1. url: jdbc:mysql://localhost:3306/Mikor에서 일부러 테이블 명을 url: jdbc:mysql://localhost:3306/Miko 이라고 철자를 틀리게 하니 url이 없다고 나오는 걸로 봐서 url은 맞다고 확인을 했습니다.

2. 비밀번호를 일부러 틀리게 하니까 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 이 에러가 떴습니다.

근데 저는 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql

이렇게 생성하고 연결 비밀번호

url: jdbc:mysql://127.0.0.1:3306/stock_example

username: root

password: 1234

이렇게 맞게 적었는데 이 오류가 나서 이 부분을 여쭤보고 싶습니다.

혹시 Docker가

Client Version:           26.0.0 와 Server Version:          25.0.3

이렇게 버전이 차이가 나서 발생하는 오류 일 수도 있을까요?

그리고 죄송하지만 알아서 해결해보려고 했지만 mac에서 제가 어떻게 사용할 지 몰라서 이렇게 사용했는데 오류가 발생했습니다.

image

 

알함님의 프로필 이미지
알함
질문자

그래서 모든 image와 container를 삭제하고 새로 아래와 같이 받았을 때

igwangmin@igwangmin-ui-MacBookPro ~ % docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
c6a0976a2dbe: Pull complete 
8dd4f8e415ca: Pull complete 
6e01a6ece3af: Pull complete 
6cfdeffd9140: Pull complete 
73fed55ee93c: Pull complete 
83404f4e4847: Pull complete 
aad53405df78: Pull complete 
d9c5f6f4cc6e: Pull complete 
e04d803ff9c7: Pull complete 
f06a309d43da: Pull complete 
Digest: sha256:9de9d54fecee6253130e65154b930978b1fcc336bcc86dfd06e89b72a2588ebe
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
igwangmin@igwangmin-ui-MacBookPro ~ % docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql
f2bb499edbfa9704693383b9bb4ec01afe9b5b08b9583aedb2a3378189ac98a4
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: address already in use.

이런 에러가 또 발생했습니다.

최상용님의 프로필 이미지
최상용
지식공유자

터미널에서

  1. docker exec -it mysql bash

  2. mysql -u root -p

    1. 비밀번호에 1234 입력

  3. use stock_example;

이 실행이 될까요 ?

알함님의 프로필 이미지
알함
질문자

연결됐습니다.. 정말 감사드립니다.

마지막으로 처음 image 생성시에

docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: address already in use. docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: address already in use.
이 에러 구문이 나와 아래와 같은 방법 화살표로 표시 해 둔 부분으로 해결했는데 강의를 진행하기에 문제가 없을까요?

igwangmin@igwangmin-ui-MacBookPro ~ % docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
c6a0976a2dbe: Pull complete 
8dd4f8e415ca: Pull complete 
6e01a6ece3af: Pull complete 
6cfdeffd9140: Pull complete 
73fed55ee93c: Pull complete 
83404f4e4847: Pull complete 
aad53405df78: Pull complete 
d9c5f6f4cc6e: Pull complete 
e04d803ff9c7: Pull complete 
f06a309d43da: Pull complete 
Digest: sha256:9de9d54fecee6253130e65154b930978b1fcc336bcc86dfd06e89b72a2588ebe
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
igwangmin@igwangmin-ui-MacBookPro ~ % docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql
f2bb499edbfa9704693383b9bb4ec01afe9b5b08b9583aedb2a3378189ac98a4
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: address already in use.
igwangmin@igwangmin-ui-MacBookPro ~ % docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS    PORTS     NAMES     SIZE
f2bb499edbfa   mysql     "docker-entrypoint.s…"   9 minutes ago   Created             mysql     0B (virtual 638MB)
igwangmin@igwangmin-ui-MacBookPro ~ % sudo lsof -iTCP -sTCP:LISTEN -P | grep ':3306'
Password:
mysqld     535    _mysql   18u  IPv6 0x965d118e85fb455f      0t0  TCP *:33060 (LISTEN)
mysqld     535    _mysql   20u  IPv6 0x965d118e85fb5d5f      0t0  TCP *:3306 (LISTEN)
igwangmin@igwangmin-ui-MacBookPro ~ % sudo kill 535 <------------
igwangmin@igwangmin-ui-MacBookPro ~ % sudo lsof -iTCP -sTCP:LISTEN -P | grep ':3306' <------------
igwangmin@igwangmin-ui-MacBookPro ~ % docker rm mysql <------------
mysql
igwangmin@igwangmin-ui-MacBookPro ~ % docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
c6a0976a2dbe: Pull complete 
8dd4f8e415ca: Pull complete 
6e01a6ece3af: Pull complete 
6cfdeffd9140: Pull complete 
73fed55ee93c: Pull complete 
83404f4e4847: Pull complete 
aad53405df78: Pull complete 
d9c5f6f4cc6e: Pull complete 
e04d803ff9c7: Pull complete 
f06a309d43da: Pull complete 
Digest: sha256:9de9d54fecee6253130e65154b930978b1fcc336bcc86dfd06e89b72a2588ebe
Status: Downloaded newer image for mysql:latest
8550a9a141fdaee67b6f7c586a24085c98a9b99512cb7a8901f0c23cf9082536
igwangmin@igwangmin-ui-MacBookPro ~ % 
igwangmin@igwangmin-ui-MacBookPro ~ % docker ps                                                                
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                               NAMES
8550a9a141fd   mysql     "docker-entrypoint.s…"   22 seconds ago   Up 20 seconds   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
igwangmin@igwangmin-ui-MacBookPro ~ % docker exec -it mysql bash
bash-4.4# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.3.0 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database stock_example;
Query OK, 1 row affected (0.01 sec)

mysql> use stock_example;
Database changed

0

안녕하세요, 인프런 AI 인턴입니다.

알함님의 질문과 관련하여 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 오류는 MySQL 접속 시 사용자 이름이나 비밀번호가 올바르지 않거나, 해당 사용자에게 접근 권한이 없을 때 발생합니다. 알함님의 경우, yml 설정과 Docker 이미지 상태, DB 조회 결과를 제공해주셨는데, 환경 설정이 올바른 것 처럼 보입니다.

이 오류의 빈번한 원인 중 하나는 MySQL에 설정된 사용자의 권한 문제일 수 있습니다. MySQL에 접속해서 사용자가 제대로 생성되었는지, 그리고 root 사용자에게 stock_example 데이터베이스에 대한 모든 권한이 제대로 부여되었는지 확인이 필요합니다.

이와 유사한 문제를 겪었던 다른 수강생의 경우와 관련하여, 해당 오류를 해결하기 위해 고려해볼 수 있는 기존 답변을 공유드립니다:

MySQL 사용자 권한을 재설정하거나, 접속 정보가 올바르게 설정되었는지 확인하는 과정이 필요할 수 있습니다. MySQL에서 root 사용자에 대한 권한 확인 및 재설정 방법은 다음과 같습니다:

-- 'root'@'localhost' 사용자의 권한 확인
SHOW GRANTS FOR 'root'@'localhost';

-- 필요한 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

알함님의 프로필 이미지
알함

작성한 질문수

질문하기