[2024/09/12]
회사에서 centos-> ubuntu 기반으로 마이그레이션 작업을 하게 되었다. 이때, 내가 맡는 프로젝트는
더미데이터를 넣어줘야 하는데 이때 내컴퓨터로 서버의 MYSQL접속을 해서 쿼리를 실행하는게 목적이었다.
이를 해결하기 위해 아래와 같은 방법으로 설정했다.
1. mysql 접속
mysql> USE mysql;
mysql> SELECT User, Host FROM user;

이 명령어는 mysql 데이터베이스의 user 테이블에서 사용자 이름(User)과 호스트(Host) 정보를 출력합니다. 예를 들어, 결과는 다음과 같이 표시될 수 있습니다:
참고로 % 는 모든 Host 접속을 허용을 한다는 의미이다. 만약 외부 IP접속을 허용하는 User가 없을 경우 아래와 같은 명령어를 실행시키면 된다.
1.1 권한 명령어 실행
mysql> CREATE USER 'new_user'@'%' IDENTIFIED BY 'your_password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'%' WITH GRANT OPTION;
mysql > FLUSH PRIVILEGES;
e.g) admin/admin 계정을 만들기 위한 예시 명령어(더미데이터 접속시 만드는 계정 정보)
mysql> CREATE USER 'admin'@'%' IDENTIFIED BY 'admin';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
mysql > FLUSH PRIVILEGES;
2. 방화벽 설정
sudo ufw allow 3306/tcp
3.MySQL/MariaDB 설정 파일 수정
: MySQL/MariaDB 설정 파일(my.cnf 또는 my.ini)에서 bind-address 설정을 확인. 기본적으로 127.0.0.1로 설정되어 있을 수 있따.. 이를 주석 처리하거나 0.0.0.0으로 변경하여 모든 IP 주소에서의 접속을 허용
[mysqld]
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
cf) 설정 파일을 못찾겠다면?
일반적으로 설정 파일은 다음 경로에 있다.
/etc/mysql/my.cnf
/etc/mysql/mariadb.cnf
/etc/mysql/mariadb.conf.d/50-server.cnf
rep -r "bnd-address" /etc/mysql/conf.d/
아래와 같은 명령어를 통해 bind-address가 무엇인지 확인할 수 있다.
grep -r "bind-address" /etc/mysql/

위와 같이 나온다면 127.0.0.1은 외부IP허용을 막는것이기 때문에 설정 파일을 수정하면 된다.
4. MySQL/MariaDB 서버 재시작
sudo systemctl restart mysql # MySQL
sudo systemctl restart mariadb # MariaDB
5. 올바르게 리스닝 하고 있는지 확인
sudo netstat -tuln | grep 3306
아래와 같이 나오면 성공!

6. 포트포워딩 해줘야해!