도커가 다른 사용자로 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
'programing' 카테고리의 다른 글
대소문자를 구분하지 않는 PHP in_array 함수 (0) | 2023.02.06 |
---|---|
MySQL - 쿼리 속도를 테스트하기 위해 캐시를 사용하지 않음 (0) | 2023.02.06 |
일시적 수식어와 휘발성 수식어가 뭐죠? (0) | 2023.01.31 |
MySql에 대한 Java 길이 (0) | 2023.01.31 |
명령줄 경유로 csv를 mysql로 Import (0) | 2023.01.31 |