MySQL 설치 및 기본 구성

MySQLBeginner
지금 연습하기

소개

이번 실습에서는 가장 인기 있는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나인 MySQL의 기본 구성과 사용법을 살펴봅니다. MySQL은 많은 데이터베이스 기반 웹 애플리케이션과 유명 웹사이트에서 널리 사용되고 있습니다. 이번 실습을 마치면 MySQL 설치 확인, 초기 보안 설정, MySQL 셸 접속, 시스템 데이터베이스 및 테이블 확인에 대한 실무 경험을 쌓게 될 것입니다.

MySQL 설치 확인

편의를 위해 시스템에 MySQL이 미리 설치되어 있습니다. 하지만 설치 과정을 이해하는 것은 중요합니다. 일반적인 Ubuntu 환경에서는 다음 명령어를 사용하여 MySQL을 설치합니다.

다음 명령어는 참고용입니다. MySQL이 이미 환경에 설치되어 있으므로 실행할 필요는 없습니다.

## DO NOT RUN THESE COMMANDS
sudo apt update
sudo apt install mysql-server -y

apt update 명령어는 패키지 목록을 업데이트하여 사용 가능한 패키지에 대한 최신 정보를 확보합니다. apt install mysql-server -y 명령어는 MySQL 서버 패키지를 설치합니다. -y 플래그는 설치 과정에서 나타날 수 있는 모든 질문에 자동으로 "yes"라고 응답하도록 합니다.

먼저 MySQL 설치를 확인하고 상태를 점검해 보겠습니다.

먼저 바탕 화면의 터미널 아이콘을 클릭하여 터미널 창을 엽니다.

바탕 화면의 터미널 아이콘

터미널에서 다음 명령어를 실행하여 MySQL 상태를 확인합니다.

sudo service mysql status

이 명령어는 sudo를 사용하여 관리자 권한으로 실행하며, 이는 시스템 수준의 작업에 자주 필요합니다. service mysql status 부분은 시스템에 현재 MySQL 서비스 상태를 보고하도록 요청합니다.

MySQL 서비스 상태 출력

MySQL이 중지되었다는 출력이 표시될 것입니다. 아직 MySQL 서비스를 시작하지 않았으므로 이는 정상입니다.

sudo service mysql start

서비스가 시작될 때까지 몇 초간 기다린 후, 상태 확인 명령어를 다시 실행합니다.

MySQL 서비스 상태 출력

MySQL 셸 접속

이제 MySQL 셸에 접속하여 기본적인 작업을 수행해 보겠습니다.

MySQL 셸에 접속하려면 다음 명령어를 사용합니다.

sudo mysql -u root

이 명령어는 sudo를 사용하여 관리자 권한으로 실행합니다. mysql 명령어는 MySQL 셸에 접속하는 데 사용되며, -u root 플래그는 root 사용자로 연결함을 지정합니다.

LabEx VM의 MySQL 설치는 root 사용자가 비밀번호 없이 로그인할 수 있도록 구성되어 있으므로 이 경우에는 비밀번호를 입력할 필요가 없습니다. 이는 개발 환경에서는 흔한 일이지만, 운영 시스템에서는 이렇게 해서는 안 됩니다.

성공하면 환영 메시지와 함께 MySQL 프롬프트가 나타납니다.

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 52
Server version: 10.6.18-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

이제 SQL 명령어를 실행할 수 있는 MySQL 셸에 들어왔습니다.

MariaDB [(none)]> 프롬프트는 현재 MariaDB(MySQL의 포크 버전)에 연결되어 있으며, 특정 데이터베이스를 사용하고 있지 않음을 나타냅니다.

MySQL 대신 MariaDB가 표시되는 점에 유의하세요. 걱정하지 마세요. 이 실습을 완료하거나 MySQL 명령어를 배우는 데는 아무런 지장이 없습니다. 이유는 다음과 같습니다.

  1. MariaDB는 MySQL의 원래 개발자들이 만든 MySQL의 포크 버전입니다. MySQL을 대체할 수 있도록 설계되었으며, MySQL 구문 및 작업과 완전히 호환됩니다.
  2. MariaDB는 진정한 오픈 소스 버전의 MySQL을 항상 사용할 수 있도록 보장하기 위해 만들어졌습니다. MySQL과의 높은 호환성을 유지하면서도 고유한 기능과 개선 사항을 제공합니다.
  3. 이 실습과 대부분의 초중급 MySQL 작업에서 MariaDB를 MySQL과 동일하게 취급해도 됩니다. 이 실습에서 사용하는 모든 명령어는 MariaDB와 MySQL에서 동일하게 작동합니다.
  4. MariaDB는 종종 MySQL보다 더 가볍고 빠르다고 평가받으며, 이는 본 실습과 같은 학습 환경에 탁월한 선택입니다. 더 빠른 응답 속도를 체감할 수 있어 학습 경험이 더 원활해질 것입니다.
  5. Ubuntu의 일부 버전을 포함한 많은 Linux 배포판은 오픈 소스 특성과 성능상의 이점 때문에 이제 MariaDB를 기본 MySQL 호환 데이터베이스 시스템으로 사용합니다.

따라서 프롬프트나 출력에 "MariaDB"가 표시되더라도, 이 실습의 목적상 MySQL이라고 생각하면 됩니다. 여기서 배우는 모든 기술은 실제 환경에서 MariaDB와 MySQL 모두에 직접 적용할 수 있습니다.

시스템 데이터베이스 탐색

시스템 데이터베이스를 살펴보겠습니다. 이는 MySQL과 함께 미리 설치되어 제공되는 데이터베이스로, MySQL 서버 자체에 대한 중요한 정보를 담고 있습니다.

2단계에서 MySQL 셸 안에 있다면 먼저 일반 터미널로 나갑니다.

EXIT;

이제 터미널에서 다음 명령어를 실행합니다.

sudo mysql -u root -e "SHOW DATABASES;" | tee /home/labex/project/system_databases.txt

-e 옵션은 MySQL에게 터미널에서 직접 SQL 문을 실행하도록 지시합니다. tee 명령어는 출력 내용을 /home/labex/project/system_databases.txt에 저장하여 나중에 쉽게 검토할 수 있도록 합니다.

MySQL 데이터베이스 목록 출력

이 명령어는 MySQL 서버에 존재하는 모든 데이터베이스를 나열합니다. 다음과 유사한 출력이 표시될 것입니다.

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

이 데이터베이스들이 무엇인지 살펴보겠습니다.

  • information_schema: 데이터베이스 메타데이터에 대한 액세스를 제공하는 데이터베이스입니다.
  • mysql: MySQL 서버 운영에 필요한 정보를 담고 있는 데이터베이스입니다.
  • performance_schema: 런타임 시 서버의 내부 실행 상태를 검사할 수 있는 방법을 제공하는 데이터베이스입니다.
  • sys: DBA와 개발자가 performance_schema에서 수집된 데이터를 해석하는 데 도움을 주는 객체 세트를 포함하는 데이터베이스입니다.

이번 실습에서는 mysql 데이터베이스에 집중하겠습니다. 터미널에서 다음 명령어를 실행하여 해당 데이터베이스의 테이블을 나열하고 결과를 저장합니다.

sudo mysql -u root -e "USE mysql; SHOW TABLES;" | tee /home/labex/project/mysql_tables.txt

긴 테이블 목록이 표시될 것입니다. 이 테이블들은 MySQL의 다양한 구성 및 운영 데이터를 저장합니다.

시스템 테이블의 데이터 검사

이제 시스템 테이블을 확인했으니, 그중 하나에 있는 데이터를 검사해 보겠습니다. mysql 데이터베이스의 user 테이블에는 MySQL 사용자 계정에 대한 정보가 들어 있습니다.

MySQL 셸에 다시 접속합니다.

sudo mysql -u root

MariaDB [(none)]> 프롬프트가 나타나면 mysql 데이터베이스로 전환합니다.

USE mysql;

다음 명령어를 실행하여 user 테이블의 구조를 확인합니다.

DESCRIBE user;

user 테이블의 모든 열이 표시됩니다. 이 테이블에는 각 MySQL 사용자에 대한 상세 정보가 포함되어 있으므로 많은 열이 보일 것입니다.

이제 이 테이블의 데이터 중 일부를 살펴보겠습니다. 몇 가지 주요 열에 집중해 보겠습니다.

SELECT User, Host, Password_expired FROM user;

이 쿼리는 user 테이블에서 세 가지 중요한 열을 선택합니다.

  • User: MySQL 계정의 사용자 이름
  • Host: 해당 사용자가 접속을 허용받은 호스트
  • Password_expired: 비밀번호 만료 여부

다음과 유사한 출력이 표시될 것입니다.

+-------------+-----------+------------------+
| User        | Host      | password_expired |
+-------------+-----------+------------------+
| mariadb.sys | localhost | Y                |
| root        | localhost | N                |
| mysql       | localhost | N                |
+-------------+-----------+------------------+
3 rows in set (0.001 sec)

이 출력은 시스템에 존재하는 MySQL 사용자 계정을 보여줍니다. root 사용자는 주요 관리자 계정이며, 나머지는 MySQL이 다양한 목적으로 사용하는 시스템 계정입니다.

MySQL 셸을 종료하려면 다음을 입력합니다.

EXIT;

그러면 일반 터미널 프롬프트로 돌아갑니다.

요약

이번 실습에서는 LabEx VM에서 MySQL을 다루는 필수 단계를 다루었습니다. MySQL 설치 확인, 초기 보안 설정, MySQL 셸 접속, 시스템 데이터베이스 탐색, 시스템 테이블의 데이터 검사 과정을 수행했습니다.

다음 내용을 배웠습니다.

  1. MySQL 서비스 상태 확인 및 관리
  2. MySQL 셸 접속
  3. 시스템 데이터베이스 보기
  4. 시스템 데이터베이스 내 테이블 탐색
  5. 시스템 테이블에서 데이터 쿼리

이러한 기본 기술은 더 고급 데이터베이스 관리 작업을 위한 토대가 됩니다. MySQL 학습을 계속하면서 이러한 기초를 바탕으로 자신만의 데이터베이스를 만들고, 복잡한 쿼리를 작성하며, 다양한 애플리케이션과 MySQL을 통합하게 될 것입니다. 데이터베이스 관리를 마스터하는 핵심은 연습이라는 점을 기억하세요. 다양한 명령어를 자유롭게 실험해 보고 MySQL의 기능을 더 깊이 탐구해 보시기 바랍니다.