MariaDB 도커 컨테이너에 호스트의 암호가 필요하지 않고 컨테이너 내부의 암호가 필요한 이유는 무엇입니까?
도커 합성 파일을 사용하여 스핀업한 MariaDB Container(10.9 최신 이미지)에서 매우 이상한 현상이 발생합니다.
컨테이너가 모두 작동합니다. 컨테이너의 셸에 액세스하면 mysql -u root -p를 실행하고 암호를 사용하여 mysql에 액세스할 수 있습니다.
포트 3306을 M2 Mac에 패치하고 mysql -h 127.0.0.1 -u root -p와 동일한 암호를 시도하면 "root@'localhost'에 대한 액세스 거부" 메시지가 표시됩니다.
그러나 암호 필드를 공백으로 두면 연결됩니다.그런데 왜 그러는지 모르겠어요!저는 빈 pwd가 있는 root@'%'와 같은 것일 수 있다고 생각했지만, 같은 비밀번호로 설정해 보았습니다.그러나 어느 쪽이든 액세스 거부 메시지에 root@'%'를 사용하고 있다고 표시될 것으로 예상됩니다.
이미지를 재구축하고 볼륨을 삭제해 보았습니다.MYSQL_PWD 주변의 github 문제가 비어 있는 것을 발견했기 때문에 적절한 측정을 위해 추가했지만 여전히 제대로 작동하지 않습니다.
db:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: dev_db
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_PWD: password
ports:
- "3306:3306"
volumes:
- data-volume:/var/lib/mysql
이전에 이 문제를 발견한 적이 있거나 해결 방법을 제안한 사람이 있습니까?root@'localhost'가 두 개의 다른 자격 증명으로 구성된 것과 같습니다.
컨테이너 내에서 mysql/mariadb에 연결하면 해당 인스턴스는 사용자를 'localhost'에서 가져온 것으로 보지 않습니다.테스트 방법은 아래를 참조하십시오.따라서 'root'@'localhost'라는 오류가 표시되는 경우 이는 컨테이너 내부가 아닌 호스트에서 실행 중인 프로세스에 연결하기 때문입니다.
테스트 컨테이너 실행
docker run -d --rm --name testmariadb -P \
-e MYSQL_RANDOM_ROOT_PASSWORD=true \
mariadb:latest
포트를 확인합니다.
export MARIADB_PORT=$(docker inspect testmariadb --format='{{range $k, $v := .NetworkSettings.Ports}}{{with index $v 0}}{{.HostPort}}{{end}}{{end}}')
echo Container running on port ${MARIADB_PORT}
연결을 시도하고 오류를 확인합니다.
mysql -h127.0.0.1 -P${MARIADB_PORT} -uroot
다음과 유사한 내용이 표시됩니다.
ERROR 1045 (28000): Access denied for user 'root'@'172.17.0.1' (using password: NO)
정리하다
docker container rm -f testmariadb
언급URL : https://stackoverflow.com/questions/73725286/why-does-mariadb-docker-container-not-require-a-password-from-the-host-but-does
'programing' 카테고리의 다른 글
C/C++에 대한 마크다운 구현 (0) | 2023.07.29 |
---|---|
ipython 노트북에서 PIL 이미지를 표시하는 방법 (0) | 2023.07.09 |
데이터베이스를 복사하는 가장 좋은 방법(SQL Server 2008) (0) | 2023.07.09 |
ASP.NET 웹 가든 - 얼마나 많은 작업자 프로세스가 필요합니까? (0) | 2023.07.09 |
MongoDB의 JavaScript NoSQL 주입 방지 (0) | 2023.07.09 |