K8S 혹은 가상 환경의 서버에서 mysql 을 손쉽게 운영하고 싶을 때 bitnami를 많이 사용합니다.
K8S 환경의 bitnami mysql 운영 도중 발생한 이슈에 대해 해결 하는 방법에 대해 서술합니다.
(Helm chart 기준)
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
운영 도중 혹은 재시작 도중 mysql 을 생성 시 해당 에러가 뜨며 서비스가 정상적으로 동직하지 않는 경우가 발생했습니다.
(root password 를 그 누구도 변경하지 않았을 뿐더러 k8s의 'Secret' 이나 'Configmap' 에도 해당 password 가 변경된 이력이 전혀 없었다)
원인은 나중에 찾고 우선 해결부터 진행했습니다.
primary:
configuration: |-
[mysqld]
skip-grant-tables
...
Helm chart의 values에서 추가합니다
kubectl exec -it pods/bitnami/mysql bash -n mysql
예시로 위와 같이 mysql 이 실행되고 있는 pod 에 들어갑니다
I have no name!@mysql:/$ mysql
mysql client를 바로 실행한다 grant 모드여서 바로 접근이 가능합니다
mysql> FLUSH PRIVILEGES;
grant 모드의 테이블 권한을 사용할 수 있도록 서버에 리로드 명령어를 날립니다
mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'mypassword';
or
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mypassword';
root password를 기존에 설정해두었던 비밀번호로 다시 변경합니다
primary:
configuration: |-
[mysqld]
#skip-grant-tables
...
mysqld 옵션에서 'skip-grant-tables'을 제거하고 다시 시작 후 정상 동작을 확인합니다
혹여나 이러한 설정으로 문제 해결이 안될 시 다음과 같은 상황을 확인이 필요합니다.
발생 원인은 정확히 찾지 못하였으나 재시작 시 root password 가 변경되는 것으로 보입니다
우선 db가 재시작되는게 치명적일 수 있으니 readniess와 liveness probe를 disabled해서 어느정도 막았으나 정말 문제가 생겼을 때 대처가 될지는 확인이 필요합니다
감사합니다.