Add user for connect to remote on mysql

MySQL에 원격 접속을 하기 위해서는 계정과 환경 설정을 해 줘야 한다.

/* MySQL에 ip 바인딩 */
$ sudo vim /etc/my.cnf

/* [mysqld] 섹션에 다음 내용 추가(내용이 있으면 수정 - ip는 인터페이스 ip) */
bind-adress = xxx.xxx.xxx.xxx

/* 계정 만들기 */
mysql> CREATE USER 'userid'@'localhost' IDENTIFIED mysql_native_password BY 'passowrd';
mysql> CREATE USER 'userid'@'%' IDENTIFIED mysql_native_password BY 'password';

/* 계정에 권한주기 */
mysql> GTRANT ALL PRIVILEGES ON *.* TO 'userid'@'localhost' WITH GRANT OPTION;
mysql> GTRANT ALL PRIVILEGES ON *.* TO 'userid'@'%' WITH GRANT OPTION;

/* 방화벽에 MySQL 포트 추가 */
$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all /* 추가 되었는지 확인사살 */

참고로 mysql_native_password 옵션은 mysql 8 부터 caching_sha2_password가 기본값이라 기존의 프로그래밍 방식에서 비밀번호 보안 암호를 지원하지 않을 경우 설정해 줘야 연결이 된다.