- MariaDB 환경별 자동 감지 (Windows/NAS/Linux) - Unix Socket 및 TCP 연결 지원 - 완전한 UTF8MB4 스키마 적용 - 자동 초기화 스크립트 개선 - NAS 배포 스크립트 MariaDB 지원 - 환경변수 기반 설정 시스템 - 상세한 배포 가이드 문서화 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2.7 KiB
2.7 KiB
시놀로지 NAS MariaDB 설정 가이드
1. MariaDB 패키지 설치
- DSM 패키지 센터 열기
- MariaDB 10 검색 및 설치
- 설치 완료 후 실행
2. MariaDB 초기 설정
2.1 MariaDB 관리 도구 접속
- DSM에서 MariaDB 10 앱 실행
- 또는 웹 브라우저에서
http://NAS-IP:3307
접속
2.2 관리자 계정으로 로그인
- 사용자:
root
- 비밀번호: 설치 시 설정한 비밀번호
3. 자료실 데이터베이스 설정
3.1 데이터베이스 생성
CREATE DATABASE IF NOT EXISTS jaryo
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
3.2 전용 사용자 생성
CREATE USER 'jaryo_user'@'localhost' IDENTIFIED BY 'JaryoPass2024!@#';
GRANT ALL PRIVILEGES ON jaryo.* TO 'jaryo_user'@'localhost';
FLUSH PRIVILEGES;
3.3 테이블 생성 (스키마 적용)
# NAS SSH 접속 후
cd /volume1/web/jaryo
mysql -u jaryo_user -p jaryo < database/mariadb-schema.sql
4. 연결 설정 확인
4.1 Unix Socket 경로 확인
sudo find /run -name "*.sock" | grep mysql
# 일반적인 경로: /run/mysqld/mysqld10.sock
4.2 연결 테스트
mysql -u jaryo_user -p -S /run/mysqld/mysqld10.sock jaryo
5. NAS 자료실 서비스 배포
5.1 자동 배포
./deploy-to-nas.sh [NAS-IP] jaryo [PASSWORD]
5.2 수동 초기화 (필요시)
cd /volume1/web/jaryo
npm run init-mariadb
6. 문제 해결
6.1 연결 오류
- MariaDB 서비스 상태 확인:
sudo systemctl status mariadb
- 소켓 파일 권한 확인:
ls -la /run/mysqld/
- 방화벽 설정 확인
6.2 권한 오류
-- 권한 재설정
GRANT ALL PRIVILEGES ON jaryo.* TO 'jaryo_user'@'localhost';
FLUSH PRIVILEGES;
6.3 한글 데이터 문제
-- 문자셋 확인
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
7. 성능 최적화
7.1 인덱스 확인
USE jaryo;
SHOW INDEX FROM files;
SHOW INDEX FROM file_attachments;
7.2 쿼리 최적화
-- 슬로우 쿼리 로그 활성화
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
8. 백업 및 복원
8.1 데이터베이스 백업
mysqldump -u jaryo_user -p jaryo > jaryo_backup_$(date +%Y%m%d).sql
8.2 데이터베이스 복원
mysql -u jaryo_user -p jaryo < jaryo_backup_YYYYMMDD.sql
9. 보안 설정
9.1 비밀번호 변경
ALTER USER 'jaryo_user'@'localhost' IDENTIFIED BY 'NEW_SECURE_PASSWORD';
9.2 불필요한 권한 제거
-- 테스트 데이터베이스 제거
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;