programing

도커가 다른 사용자로 localhost에서 mariadb에 연결할 수 없습니다.

bestcode 2023. 1. 31. 20:52
반응형

도커가 다른 사용자로 localhost에서 mariadb에 연결할 수 없습니다.

안녕하세요, 저는 이 mariabdb 도커 튜토리얼에 따라 이 stackoverflow 질문도 체크했습니다.mariadb 컨테이너를 문제없이 시작할 수 있으며,root그리고.mypass명령어를 사용한 패스워드mysql -h0.0.0.0 -uroot -pmypass그러나 새 사용자를 만들고 모든 사용자를 허용한 후 해당 사용자 이름과 비밀번호로 연결할 수 없습니다.액세스 거부 에러가 발생.

여기 있습니다docker ps command출력

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                    NAMES
268c36eac13a        mariadb/server:10.3   "docker-entrypoint.s…"   31 minutes ago      Up 31 minutes       0.0.0.0:3306->3306/tcp   mariadbtest

mariadb 컨테이너에 연결합니다.docker exec -it 268c36eac13a /bin/sh다음 명령어를 실행합니다.

mysql -uroot -pmypass
create database emails;
grant all on emails.* to 'testUser'@'localhost' identified by '123456';

그러면 실행 시 localhost에서mysql -h0.0.0.0 -utestUser -123456나 이제...Access denied for user 'testUser'@'172.17.0.1' (using password: YES)에러입니다.

도와줘서 고마워요!

이것은 네트워크상의 문제라고 생각합니다.사용자는 허용됩니다.testUser데이터베이스에 연결하다localhost그러나 이는 컨테이너 내에서 실행 중인 클라이언트에서만 연결할 수 있음을 의미합니다.호스트 시스템에서 MariaDB 컨테이너에 로그인할 때 호스트 도커 주소를 얻을 수 있습니다.172.17.0.1.

하나의 해결책은 사용자가 임의의 IP에서 접속할 수 있도록 하는 것입니다.

grant all on emails.* to 'testUser'@'%' identified by '123456';

또는 지정된 서브넷으로부터의 IP.방법은 CREATE USER 문서에서 확인할 수 있습니다.

또 다른 솔루션은 호스트 시스템의 IP에 사용자를 추가하는 것입니다.컨테이너 내에서 호스트 IP를 가져와 이 IP에 대한 사용자를 추가할 수 있습니다.컨테이너에서 호스트 IP를 가져오는 방법에 대해 다음 질문을 확인하십시오.

언급URL : https://stackoverflow.com/questions/56309282/docker-cant-connect-to-mariadb-from-localhost-with-different-user

반응형