Mac에 Homebrew로 MySQL을 설치하고 두 가지를 손봤다. 기본 포트 3306을 3301로 바꿨고, GUI 클라이언트로 접속할 때 뜬 Public Key Retrieval is not allowed 에러를 풀었다. 둘 다 설정 한두 줄로 끝나는 일이다. 고칠 곳만 알면 된다.
my.cnf는 어디에 있나
포트를 바꾸려면 설정 파일 my.cnf부터 찾아야 한다. 위치는 설치 방식마다 다르니 추측하지 말고 mysqld에게 직접 물어보는 게 빠르다.
# mysqld가 설정 파일을 읽는 경로와 순서 확인
mysqld --verbose --help | grep -A 1 'Default options'

출력은 /etc/my.cnf, /etc/mysql/my.cnf, /opt/homebrew/etc/my.cnf, ~/.my.cnf 순서다. 나열된 파일을 앞에서부터 차례로 읽으니, 같은 옵션이 여러 파일에 있으면 뒤에 읽힌 값이 남는다. Homebrew로 설치했다면 실제 파일은 /opt/homebrew/etc/my.cnf에 있다.
포트를 3301로 바꾸기
파일을 열어 port 한 줄을 넣고 서버를 재시작하면 끝이다.
vi /opt/homebrew/etc/my.cnf
# [mysqld] 섹션 아래에 추가
port = 3301
# 재시작해야 적용된다
mysql.server restart
이후 접속하는 클라이언트도 포트를 3301로 맞춰야 한다.
Public Key Retrieval is not allowed
GUI 클라이언트로 접속하려 하자 연결 단계에서 에러가 났다.

MySQL 8의 기본 인증 플러그인은 caching_sha2_password. SSL 없이 접속하면 클라이언트는 비밀번호를 암호화하기 위해 서버의 RSA 공개키가 필요한데, MySQL Connector/J는 이 공개키를 서버에서 받아오는 동작을 기본으로 막아 둔다. 중간자가 가짜 공개키를 끼워 넣을 수 있기 때문이다.
그래서 allowPublicKeyRetrieval 기본값이 false이고, 에러 메시지도 이 옵션 이름을 그대로 가리킨다.
접속 설정의 [Driver properties] 탭에서 두 값만 변경

allowPublicKeyRetrieval→trueuseSSL→false
로컬 개발용 DB라서 이 조합으로 충분했다. 원격 서버에 같은 설정을 쓰면 공개키를 검증 없이 받아오게 되니 그때는 SSL을 켜거나 공개키 파일을 클라이언트에 직접 지정하는 쪽이 권장된다.
정리
my.cnf위치는mysqld --verbose --help로 확인한다. Homebrew 설치는/opt/homebrew/etc/my.cnf다.포트는
port = 3301한 줄과mysql.server restart로 바뀐다.Public Key Retrieval is not allowed는 드라이버가 공개키 요청을 막아서 나는 에러이고, 로컬이라면allowPublicKeyRetrieval=true,useSSL=false로 넘어간다.