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

hansung cho님의 프로필 이미지

작성한 질문수

따라하며 배우는 MySQL on Docker

Proxy Layer 구성 > ProxySQL 구성 및 Failover 테스트 > app_test_conn.sh 오류 문의

작성

·

592

0

좋은 강의 제공해주셔서 많이 배우고 갑니다. 실습 과정중 오류가 발생하여 문의 드립니다.

환경 : 맥북 + Docker 환경

진행사항 : proxysql 이전 과정까지는 정상 완료 (replication, Orchestrator)

사전 작업

centos7 docker 생성 후 app_test_conn.sh 수행 예정

centos docker run -it --name centos7 -h centos7 \

--net mybridge --net-alias=proxysql \

--privileged centos:7 init

오류 현상 01 :  app_test_conn.sh 수행시 오류

centos7 에서 app_test_conn.sh 수행시 16033 포트로 연결이 되지 않음

tcping proxysql 16033 수행시 포트가 close 되어있는 부분 확인, proxysql 데비안 리눅스 환경 확인 후 포트를 열어볼려고 했지만 진행하지 못함.

그래서 poxysql docker의 포트를 6032, 6033으로 다이렉트로 연결해서 생성 후 수행

docker run -it --name proxysql -h proxysql -p 6032:6032 -p 6033:6033 \ --net mybridge --net-alias=proxysql \ -v /Users/hansung/docker/db/proxysql/data:/var/lib/proxysql \ -v /Users/hansung/docker/db/proxysql/conf/proxysql.cnf:/etc/proxysql.cnf \ -d proxysql/proxysql

오류 현상 02 :  app_test_conn.sh 수행시 오류

수행시 아래와 같은 오류 발생 (mysql -uappuser -papppass -hproxysql -P6033)

[root@centos7 ~]# sh app_test_conn.sh

ERROR 1045 (28000): ProxySQL Error: Access denied for user 'appuser'@'172.19.0.7' (using password: YES)

ERROR 1045 (28000): ProxySQL Error: Access denied for user 'appuser'@'172.19.0.7' (using password: YES)

ERROR 1045 (28000): ProxySQL Error: Access denied for user 'appuser'@'172.19.0.7' (using password: YES)

 

트러블 슈팅을 위해서 db01 mysql에 다이렉트로 연결하는 부분으로 설정후 연결 시도. (centos7 > db01)

아래와 같이 정상적으로 연결 확인. (mysql -uappuser -papppass -hdb01 -P3306)

[root@centos7 ~]# sh app_db01_conn.sh

db01    2020-12-09 13:40:24

db01    2020-12-09 13:40:25

참고. 강의 자료의 app_test_conn.sh의 ip 정보는 알수 없는 ip로 proxysql ip로 지정해서 연결 시도 했음.

docker inspect --format '{{.NetworkSettings.Networks.mybridge.IPAddress}}' proxysql

어제 밤부터 삽질 중입니다. 도와주세요.

답변 4

1

김영헌님의 프로필 이미지
김영헌
지식공유자

아이쿠...고생하셨겠네요..

원인 찾기가 쉽지 않았겠어요. ㅠㅠ

그래도 찾아내서 다행입니다.  지금 수강하시는 분들 중에 가장 진도가 빠르세요. ^^

부족한 강의를 잘 들어 주셔서 감사합니다.

1

hansung cho님의 프로필 이미지
hansung cho
질문자

해결 했습니다. proxysql 문법이 익숙하지 않아서 발생한 부분입니다.

아래 구문 입력 후 "LOAD MYSQL USERS TO RUNTIME;", "SAVE MYSQL USERS TO DISK;"를 입력해야하는데요.

"LOAD MYSQL SERVERS TO RUNTIME;"를 입력해서 발생한 부분입니다. (복붙하다보니 ㅡㅜ)

insert into mysql_users(username, password, default_hostgroup, transaction_persistent) values ('appuser', 'apppass', 10, 0);

LOAD MYSQL USERS TO RUNTIME;

SAVE MYSQL USERS TO DISK;

이어서 실습 계속 하도록 하겠습니다. 고맙습니다.

저도 이와 같은 실수로 엄청난 삽질을 했는데 진작 이 글을 찾아볼걸 그랬네요 정말 감사합니다!!!!!! 저도 같은 방법으로 해결했습니다!

0

hansung cho님의 프로필 이미지
hansung cho
질문자

네, 빠른 답변 감사합니다.

맥북 환경에서 재 수행해보았는데요. 오류가 발생하네요.

제가 조금더 살펴보도록 하겠습니다.

base ❯ cat app_test_conn.sh                                                                                                                                                                                    ...

  mysql -uappuser -papppass -h222.99.149.73 -P16033 -N -e "select @@hostname,now()" 2>&1| grep -v "Warning"                                                                                                         │

...

                                                                                                                                                                                                    │

base ❯ sh app_test_conn.sh                                                                                                                                                                                     

ERROR 1045 (28000): ProxySQL Error: Access denied for user 'appuser'@'172.19.0.1' (using password: YES)                 

ERROR 1045 (28000): ProxySQL Error: Access denied for user 'appuser'@'172.19.0.1' (using password: YES)                 

^Z

[6]  + 11950 suspended  sh app_test_conn.sh                                                                                                                                                 

0

김영헌님의 프로필 이미지
김영헌
지식공유자

외부에서 proxysql로 접속할때 사용된 host의 ip는 docker가 설치된 host의 IP 입니다.

mysql -uappuser -papppass -hproxysql -P6033

위 명령어 부분에서 -hproxysql 이 부분을 -h [docker-host-ip]로 변경해서 한번 시도해 보시겠어요?