Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 마이봇#문서챗봇#PDF#TEXT#유투브#챗봇만들기#랭체인# langchain#벡터데이터#자료검색#챗GPT#GPT4#챗지피티
- 솔라나
- eth
- 쇼핑몰관리시스템#매입관리#시트메타#매입채널#엑셀업로드
- 비트코인
- 마이봇#핸드폰대체#
- 11만4천 달러
- doge
- 마이봇#API 설정
- 마이봇#chatgpt#ai#인공지능
- 리플
- xrp
- 도지코인
- 마이봇#pdf챗봇#상담챗봇#faq챗봇#chatgpt#랭체인#llm
- 광동온더그린#프랜즈#가상CC#스크린골프#
- btc
- #창작#SNS#스포츠#반려동물#연애#과제#레시피#활동#건강#운세#글쓰기#비즈니스 #AI비서#챗GPT#CHATGPT
- 이더리움
- 펫버틀러#서버연동#프로필등록#로그인서버연동#이미지#동영상#업로드용 화면#앱개발#플러터#반려생활#로딩바#loading bar#
- 마이봇#아이폰#아이폰심사#IT고시#
- flutter#채팅창@메모창#url링크#날짜추가
- PDF#챗봇검색#서비스#GPT4#PGT3.5#GPT#랭체인#챗봇#CHATBOT#LLM#문서검색
- 로우코드#ERP#관리시스템#상품관리#선택박스#자동화프로그램
- 로우코드#lowcode#erp#관리시스템#시트메이트#시트메타#엑셀업로드#엑셀다운로드#그리드#데이터관리#생산관리시스템#로그관리#히스토리#입력체크
- 플러터#sms#mms#문자보내기
- PDF검색#PDF검색챗봇#NEXTJS#스터디#스타트업#랭체이#langchain#prisma#sqlite#
- flutter#sqlite#chatGPT#
- #비트코인 #암호화폐 #코인투자 #가상화폐 #이더리움 #알트코인 #코인뉴스 #투자전략 #코벡스 #코인계산기
- 커피#그라인더#통돌이 오픈 #로스팅#드립커피#생두#원두
- Sol
Archives
- Today
- Total
혼자서 앱 만드는 개발자 함께하는 AI 세상
MySQL 외부 접속 설정 가이드 본문
반응형
문제 상황
- MySQL 3306 포트로 외부 접속이 안 되는 문제
- ERROR 2003 (HY000): Can't connect to MySQL server 오류 발생
해결 과정
1. 초기 상태 확인
# MySQL 서비스 상태 확인
sudo systemctl status mysql
# 포트 리스닝 확인
sudo netstat -tlnp | grep 3306
문제점: netstat에서 3306 포트가 보이지 않음
2. MySQL 로그 확인
sudo tail -20 /var/log/mysql/error.log
발견된 문제: 로그에서 port: 0으로 표시됨 (정상적으로는 port: 3306이어야 함)
3. MySQL 설정 파일 확인
# 설정 파일에서 포트 관련 설정 확인
sudo grep -r "port" /etc/mysql/
sudo cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep -E "(bind-address|port)"
설정 내용:
port = 3306
bind-address = 0.0.0.0
mysqlx-bind-address = 127.0.0.1
4. 실제 적용된 설정 확인
# MySQL이 실제로 읽고 있는 설정 확인
sudo mysqld --print-defaults
핵심 문제 발견: --skip-grant-tables 옵션이 활성화되어 있었음
/usr/sbin/mysqld would have been started with the following arguments:
--skip-grant-tables --user=mysql --port=3306 --bind-address=0.0.0.0 ...
해결 방법
1. skip-grant-tables 설정 제거
# skip-grant-tables 설정 위치 찾기
sudo grep -r "skip-grant-tables" /etc/mysql/
# 설정 파일 편집
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
수정 내용: skip-grant-tables 라인을 주석 처리하거나 제거
# skip-grant-tables (주석 처리)
2. 올바른 MySQL 설정 확인
[mysqld]
port = 3306
bind-address = 0.0.0.0
user = mysql
3. MySQL 재시작
sudo systemctl restart mysql
4. 설정 적용 확인
# 포트 리스닝 확인
sudo netstat -tlnp | grep 3306
# 로그 확인 (이제 port: 3306으로 표시되어야 함)
sudo tail -5 /var/log/mysql/error.log
5. 외부 접속 권한 설정
mysql -u root -p
-- cleandot 사용자의 현재 권한 확인
SELECT user, host FROM mysql.user WHERE user='cleandot';
-- 외부 접속 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'cleandot'@'%' IDENTIFIED BY 'iujh@adm';
-- 권한 적용
FLUSH PRIVILEGES;
-- 확인
SELECT user, host FROM mysql.user WHERE user='cleandot';
6. 방화벽 설정
# 3306 포트 열기
sudo ufw allow 3306
# UFW 상태 확인
sudo ufw status
외부 접속 테스트
# 외부에서 MySQL 접속 테스트
mysql -u cleandot -p -h sheetmeta.net
# 비밀번호: iujh@adm
문제 해결 포인트
- skip-grant-tables 옵션: 이 옵션이 활성화되어 있으면 MySQL이 정상적으로 네트워크 연결을 받지 않을 수 있음
- bind-address 설정:
127.0.0.1은 로컬에서만 접속 가능,0.0.0.0은 모든 IP에서 접속 가능 - 방화벽 설정: 시스템 방화벽에서 3306 포트가 열려있어야 함
- 사용자 권한: MySQL 사용자에게 외부 접속 권한(
'user'@'%')이 있어야 함
최종 설정 요약
- MySQL 설정:
/etc/mysql/mysql.conf.d/mysqld.cnf port = 3306 bind-address = 0.0.0.0 # skip-grant-tables 제거됨- 사용자 정보:
- 사용자명:
cleandot - 비밀번호:
iujh@adm - 접속 권한: 모든 IP (
%)
- 사용자명:
- 방화벽: 3306 포트 개방
추가 팁
보안 강화
특정 IP에서만 접속을 허용하려면:
GRANT ALL PRIVILEGES ON *.* TO 'cleandot'@'특정IP주소' IDENTIFIED BY 'iujh@adm';
# 특정 IP에서만 방화벽 허용
sudo ufw allow from 특정IP주소 to any port 3306
문제 진단 명령어
# MySQL 프로세스 확인
sudo systemctl status mysql
# 포트 리스닝 확인
sudo netstat -tlnp | grep 3306
sudo ss -tlnp | grep 3306
# MySQL 설정 확인
sudo mysqld --print-defaults
# 로그 확인
sudo tail -f /var/log/mysql/error.log
작성일: 2025년 8월 2일
테스트 환경: Ubuntu Server, MySQL 8.0.42
728x90
반응형
Comments