2. MySQL 환경설정
1. MySQL WorkBench 폰트 변경
01. D2Coding 폰트 설치
우분투 초기세팅5 - 폰트
mkdir ~/.local/share/fonts;cd ~/.local/share/fonts;wget https://github.com/naver/d2codingfont/releases/download/VER1.3.2/D2Coding-Ver1.3.2-20180524.zip;unzip D2Coding-Ver1.3.2-20180524.zip; 설치 중, 대문자 'A' 입력 터미널 폰트 설정더보기
basiclike.tistory.com
02. MySQL WorkBench 폰트 설정

2. "이것이 MySQL이다" 샘플DB employee 추가하기
1. 예제 다운받을 폴더로 이동하고, 터미널 실행(or 터미널에서 다운받을 경로 설정)

2. 예제 파일 다운로드
wget http://download.hanbit.co.kr/mysql/8.0/employees.zip
링크: http://download.hanbit.co.kr/mysql/8.0/employees.zip

3. 다운로드한 파일의 권한 확인 및 필요시 변경


4. 압축 해제
unzip employees.zip -d [새폴더명]

5. mysql 접속

6. 샘플 데이터베이스 가져오기
source 압축해제경로/employees.sql

7. 가져온 샘플 데이터베이스 확인


3. MySQL 네트워크 상태 확인
A. mysql 원격 연결 확인
A.1 IP 확인
ip addr show
- IP 주소와 네트워크 관련 정보를 출력
- 접속할 서버의 IP 확인

A.2 DB 서버 ping 확인
ping 10.10.21.xxx ping google.com
- 내 컴퓨터와 다른 컴퓨터(서버, 장비 등) 사이의 네트워크 연결이 살아 있는지, 통신이 가능한지 확인
- 접속할 서버의 IP로 통신 확인

A.3 mysql 원격 연결
mysql -u [사용자ID] -p -h [서버IP 또는 도메인] -P [포트번호]
- 접속할 서버의 MySQL 아이디, 비밀번호, IP, Port 사용해 접속

4. MySQL 외부 접속 허용 설정
: 참고 링크 - [Database] Workbench 연결 오류 해결
1. mysqld.cnf 수정(메모장 or nano)
/etc/mysql/mysql.conf.d/ 경로로 이동

2. mysql 설정 파일의 bind-address 수정

# bind-address = 127.0.0.1 # 로컬에서만 MySQL 접속 허용 >> 주석처리
bind-address = 0.0.0.0 # 외부 포함 모든 곳에서 접속 허용 추가
3. mysql 재시작
sudo systemctl restart mysql
*만약 노란색 경고 메시지 표시된다면, 안내 메시지처럼 systemctl daemon-reload 실행
4. mysql 방화벽 허용
sudo ufw allow 3306/tcp
- 3306/tcp는 MySQL의 기본 포트
- 이 명령은 "이 서버로 들어오는 3306번 포트의 TCP 연결"을 모두 허용한다는 의미
- 즉, 외부(로컬 네트워크/인터넷)에서 이 서버의 3306 포트로 접근이 가능
4.1 특정 ip만 허용
sudo ufw allow from 192.168.0.10 to any port 3306 proto tcp
4.2 특정 포트 닫기sudo ufw deny 3306/tcp
4.3 (마지막에 마지막으로 안될시 시도할 것) ufw 방화벽 끄기sudo systemctl stop ufw // 방화벽 끄기
sudo systemctl stats ufw // 방화벽 상태 확인
5. MySQL 계정 생성 + 원격 접속 테스트
: Ubuntu 24.04 + MySQL(8.x) 기본 설정은, root 계정으로 원격 접속 불가능
1. 외부 접속 테스트용 user1 계정 생성
CREATE USER IF NOT EXISTS 'user1'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2 생성된 계정으로 접속 테스트

3. 외부에서 mysql 원격 연결
mysql -u [사용자ID] -p -h [서버IP 또는 도메인] -P [포트번호]
- 접속할 서버의 MySQL 아이디, 비밀번호, IP, Port 사용해 접속

99. 한글 인코딩 설정
: 우분투24 이상의 경우, 진행하지 않는다.
"우분투 24 이상 + mysql 8.0 이상" 이라면,
한글 입출력 사용에 문제가 없는 자동으로 utf8mb4 기반으로 설정되어 있다.
SHOW VARIABLES WHERE Variable_name IN (
'character_set_server', 'collation_server',
'character_set_client', 'character_set_connection',
'character_set_database', 'max_allowed_packet'
);

(경우1.) 하지만 latin1 또는 utf8(utf8mb3)이면 이모지/일부 특수 문자 깨질 수 있고,
(경우2.) 애플리케이션(클라이언트)이 DB 접속 시 별도 문자셋을 지정(예: MySQL Connector 등에서 SET NAMES latin1 등)하는 경우에도 한글 및 문자가 깨질 수 있다.
1. mysqld.cnf 파일 내용 수정(nano 이용)
/etc/mysql/mysql.conf.d 경로로 이동

# 클라이언트가 MySQL 서버에 접속할 때 자동 실행되는 SQL (utf8mb4 + 최신 콜레이션 적용)
init_connect='SET collation_connection = utf8mb4_0900_ai_ci'
init_connect='SET NAMES utf8mb4'
# 새로 생성되는 DB, 테이블, 컬럼의 기본 문자셋과 콜레이션 지정
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci
# 클라이언트 문자셋 협상 무시: 항상 서버의 utf8mb4 강제 적용
skip-character-set-client-handshake
# 최대 패킷 크기(1GB, 필요시 조정)
max_allowed_packet = 1024M
2. mysql 재시작
sudo systemctl restart mysql
3. 설정 적용 확인
SHOW VARIABLES WHERE Variable_name IN (
'character_set_server', 'collation_server',
'character_set_client', 'character_set_connection',
'character_set_database', 'max_allowed_packet'
);
