데이터베이스 이론 및 MySQL 설치 및 환경 설정

데이터베이스 이론 및 MySQL 설치

2023-2-27 업데이트

5.7 버전 MySQL 다운로드

다운로드 및 압축 해제

설치 패키지를 다운로드한 후 적절한 폴더에 압축을 해제합니다.

my.ini 설정 파일 생성

5.7 버전의 MySQL은 기본적으로 설정 파일과 data 폴더가 없으므로 초기화 과정에서 수동으로 생성해야 합니다:

[mysqld]
port = 3306
basedir=C:\MySQL\mysql-5.7.40-winx64
datadir=C:\MySQL\mysql-5.7.40-winx64/data 
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8

참고: 실제 MySQL 경로에 따라 basedir과 datadir을 지정해야 합니다.

환경 변수 설정

관련 블로그 참조

mysqld 서비스 시작

관리자 권한의 cmd에서 다음 명령어를 순서대로 실행합니다:

mysqld --initialize   # data 데이터베이스 초기화
mysqld -install    # 시스템 서비스 등록
net start mysql    # 서비스 시작

데이터베이스 연결

일부 버전에서는 MySQL 클라이언트의 root 계정이 비밀번호 없이 연결되지 않을 수 있습니다. 이 경우 검증을 건너뛰고 비밀번호를 수정해야 하며, 이전 블로그의 [비밀번호 잊음] 섹션을 참조하세요.


데이터베이스 발전 과정

데이터 저장 방식의 발전

  • 사용자 정의 파일, 다양한 형식으로 저장
  • 소프트웨어 개발 디렉토리 규칙의 db 폴더
  • 데이터베이스 서비스: 저장 경로와 데이터 조작 방식을 통일

이는 학습 비용을 낮추며, 각 프로젝트에서 유사한 방식으로 데이터를 처리할 수 있습니다.

데이터베이스 소프트웨어 발전

  • 로컬 파일: 초기 단일 기기 게임 및 비 네트워크 애플리케이션
  • 네트워크에 데이터 저장

현재 많은 소프트웨어는 C/S 아키텍처와 B/S 아키텍처를 채택하며, 모든 사용자의 데이터가 서버에 저장됩니다.

클라이언트는 서버 서비스를 요청하여 데이터를 조작합니다. 명백한 장점은 사용자가 계정을 통해 다양한 기기와 위치에서 데이터에 접근할 수 있다는 것입니다.

  • 데이터베이스 서비스 클러스터: 모든 사용자의 데이터 보안을 확보하기 위해 데이터베이스 내용은 백업됩니다.

데이터베이스 이론

데이터베이스 본질

  • 하위 원리 관점: 데이터를 조작하는 프로세스(일련의 코드)
  • 실제 응용 관점: 시각적 조작 인터페이스(일부 소프트웨어)

일반적으로 데이터베이스는 데이터베이스 소프트웨어를 의미합니다.

데이터베이스도 C/S 아키텍처 프로그램이며, 데이터베이스 클라이언트를 통해 명령을 입력하여 데이터베이스 서버가 실제 데이터를 조작하도록 할 수 있습니다.

데이터베이스 분류

관계형 데이터베이스

관계형 데이터베이스의 특징:

  • 고정된 테이블 구조(필드명, 필드 타입 등)
  • 테이블 간에 데이터베이스 수준의 관계를 설정할 수 있음(코드 수준이 아닌 데이터 간의 연관성)
관계형 데이터베이스 특징
MySQL 오픈소스 사용, 가장 널리 사용됨, 기능이 균형 잡혀 있고 포괄적
Oracle 유료 현재 가장 높은 보안, 대기업 선호
PostgreSQL 오픈소스 무료, 2차 개발 지원, 호환성 높음
MariaDB MySQL과 동일한 개발자, 여전히 오픈소스 무료
SQLite 소형 데이터베이스, 주로 로컬 테스트용

이외에도 SQL Server, DB2, Access 등 다양한 데이터베이스 소프트웨어가 시장에 있습니다.

비관계형 데이터베이스

비관계형 데이터베이스의 특징:

  • 고정된 테이블 구조가 없으며, 키-값 쌍 방식으로 데이터를 저장 및 검색
  • 데이터 자체에는 관계가 없으며, 코드를 통해 데이터 간의 논리적 관계를 작성해야 함
비관계형 데이터베이스 특징
Redis 가장 많이 사용되는 비관계형 데이터베이스, 캐시 데이터베이스
MongoDB 문서형 데이터베이스, 주로 웹 스크래핑 및 빅데이터 분야 사용(관계형과 가장 유사한 비관계형)
Memcache Redis에 의해 점차 도태됨, 기능이 부족

데이터베이스 소프트웨어는 많지만, 모든 인기 있는 데이터베이스의 데이터 조작 방식은 매우 유사하며, MySQL이 가전형적입니다.

MySQL 다운로드

최신 버전은 이미 8.x에 이르렀으며, 더 새로운 버전일수록 학습 비용이 낮습니다. 본문에서 설치하는 MySQL 버전은 5.6 버전입니다.

다운로드 절차

MySQL 공식 사이트: https://www.mysql.com/

다양한 버전의 다운로드 주소: https://downloads.mysql.com/archives/community/

  1. 버전 선택 후 압축 파일 다운로드
  2. 압축 파일을 적절한 폴더에 해제
  3. 디렉토리 확인

설치 완료.

MySQL 시작

  1. bin 폴더를 시스템 환경 변수에 추가
  2. 관리자 cmd 명령 프롬프트에서 mysqld 시작
> mysqld  # 환경 변수에 추가했다면 mysqld를 직접 실행
  1. mysqld가 실행된 창은 그대로 두고 다른 cmd에서 mysql을 시작, 두 가지 시작 모드가 있습니다.

이제 mysql 명령을 통해 데이터를 조작할 수 있습니다(주로 data 폴더 조작).

시스템 서비스 생성

매번 수동으로 mysqld 프로세스를 시작하는 것은 번거롭습니다. mysqld를 시스템 백그라운드 서비스로 설정하고 부팅 시 자동 시작하도록 할 수 있습니다.(다음 작업을 수행하기 전에 이전에 시작한 데이터베이스 서버와 클라이언트를 종료해야 합니다)

  1. mysql을 시스템 서비스에 추가

시스템 서비스 보기 방법: 실행 창에 `services.msc` 입력

프로그램을 시스템 서비스에 추가: 관리자 cmd에 `mysqld --install` 입력

  1. 첫 추가 시 수동 시작 필요

위 그림의 MySQL을 마우스 오른쪽 버튼으로 클릭하여 시작할 수 있습니다.

또는 명령 프롬프트로 시작: `net start mysqld`

참고: MySQL 제거

1. 먼저 서버 종료
	net stop mysql	
2. 시스템 서비스 제거
	mysqld --remove

MySQL 로그인 비밀번호 변경

  1. `mysqladmin -u사용자명 -p기존비밀번호 password 새비밀번호`

위 형식은 명문 비밀번호 형식이며, 명문을 직접 따르지 않을 경우 프로그램이 암호 입력을 요구합니다.

여기서 기존 비밀번호가 없으므로 바로 새 비밀번호를 입력합니다.

  1. 관리자 root 계정으로 로그인 후 사용자 데이터를 저장하는 테이블 `mysql.user` 직접 수정(MySQL 문장 필요)

비밀번호 잊음

제거 후 재설치(권장하지 않음) 외에도 스킵 권한 테이블 방식으로 데이터베이스를 열 수 있습니다.

  1. 실행 중인 서버 종료: `net stop mysql`
  2. 권한 테이블을 건너뛰는 방식으로 mysqld 서버 재시작: `mysqld --skip-grant-tables`
  3. 관리자 권한으로 로그인: `mysql -uroot -p`
  4. 비밀번호 직접 수정(mysql 라이브러리의 user 테이블의 root 비밀번호 수정)
update mysql.user set authentication_string=password('123') where Host='localhost' and User='root';

문자 인코딩 및 설정 파일

`\s`로 MySQL 관련 정보 확인

현재 사용자, 버전, 인코딩, 포트 번호 등을 볼 수 있습니다.

문자 인코딩이 네 항목이 있으며, Db characterset은 자체적으로 설정한 것을 제외하고 다른 항목은 MySQL 5.6 이전 버전의 기본 문자 인코딩입니다. 이는 현재 문자 인코딩 요구 사항에 더 이상 적합하지 않습니다.

하지만 이후 버전은 모두 수동 설정할 필요 없이 기본적으로 utf 계열 인코딩 형식입니다.

영구적으로 인코딩 구성을 수정하려면 설정 파일을 조작해야 합니다.

기본 설정 파일은 my-default.ini

이 파일을 열면 내부에 많은 주석과 간단한 설정 파일이 있습니다.

설정 파일 설명에서 수정 및 추가할 경우 이 파일에서 직접 변경하지 말고 동일한 디렉토리에 새 파일 `my.ini`를 작성하고 새 구성을 작성하라고 언급하고 있습니다.

문자 인코딩 관련 구성은 다음 구성을 복사하기만 하면 됩니다.

[mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci
[client]
    default-character-set=utf8mb4
[mysql]
    default-character-set=utf8mb4

참고:

  1. utf8mb4는 이모지를 저장할 수 있으며 기능이 더 강력합니다.
  2. utf8과 utf-8은 차이가 있으며, MySQL에는 utf8만 있습니다.

[mysqld] 관련 구성을 수정한 후 서버를 다시 시작해야 합니다. mysqld가 시작될 때만 이 구성을 로드하기 때문입니다.

net stop mysql
net start mysql

수정 후 `\s`로 구성을 확인하면 기본 문자 인코딩 변경이 적용된 것을 볼 수 있습니다.

구성 수정 후 발생할 수 있는 문제

my.ini 파일을 동일 디렉토리에 작성하여 my_default.ini의 구성을 덮어썼습니다. 원래 기본 구성 파일에는 mysqld 구성 중 하나가 원래 적용되었습니다.

따라서 이 구성을 추가해야 합니다: `sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES`

마지막으로 my.ini에 원래 구성과 새 문자 인코딩 구성을 추가하면 다음과 같아야 합니다:

[mysqld]
port = 3306
basedir=C:\MySQL\mysql-5.7.40-winx64
datadir=C:\MySQL\mysql-5.7.40-winx64/data 
max_connections=200
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
    default-character-set=utf8mb4
[mysql]
    default-character-set=utf8mb4

태그: MySQL 데이터베이스 데이터베이스 이론 설치 환경 설정

7월 17일 20:42에 게시됨