윈도우에 MySQL 8.4.x 설치하기

개발/테스트/공부를 위해서 PC에 MySQL 8.4.x 를 설치해보겠습니다. 이렇게 설치해 놓고, 다양한 언어와 함께 사용해 볼 예정이에요.

MySQL 8.4.x 다운로드

웹브라우저에서 https://dev.mysql.com/downloads/mysql/ 으로 이동합니다. 그러면, 다음과 같은 화면이 나올거에요.

여기에서 MySQL 8.4.x LTS를 선택하고, MSI InstallerDownload 버튼을 클릭합니다. 다음 화면에서 No thanks, just start my download.를 클릭하면, 다운로드 진행됩니다.

MySQL 8.4.x 설치

  1. 다운로드 폴더에 mysql-8.4.4-winx64.msi 가 받아지면, 이것을 더블클릭하여 설치를 진행합니다.
  2. 대부분 Next 버튼을 클릭하고 넘어가면 됩니다.
  3. Choose Setup Type 화면에서는 Typical 을 선택해서 넘어가면 됩니다. (만약에 다른 위치에 설치하고 싶다면, Custom 을 선택합니다.)
  4. Install버튼을 클릭하면, 설치가 진행됩니다.
  5. Completed the MySQL Server Setup Wizard 화면이 나오면, Run MySQL Configurator를 선택하고, Finish버튼을 클릭합니다.
  6. Next버튼을 눌러주다가 Accounts and Roles화면에서 MySQL Root 비밀번호를 원하는 값으로 입력해줍니다. 저는 test123으로 할게요.
  7. 그리고, 계속해서 Next버튼을 눌러줍니다.
  8. Sample Databases 화면에서는 필요하다면, 샘플 데이터베이스를 선택해줍니다.
  9. 이후에 계속 Next버튼을 눌러주시고, 마지막에 Finish버튼을 클릭하면, MySQL 설정이 완료됩니다.

처음에는 시작유형이 자동으로 되어 있어서, 컴퓨터를 부팅하면서 MySQL이 실행이 자동으로 실행이 된다. 원치 않는다면 수동으로 바꾸어도 좋겠습니다.

커맨드도구 사용 설정

커맨드툴을 하려면, PATH 설정을 먼저 해주어야 합니다. Win + R버튼을 누르고, sysdm.cpl ,3 이라고 입력하고 엔터를 입력합니다. 그러면, 시스템 속성창이 나오는데, 아래와 같습니다.

여기에서 환경 변수 버튼을 클릭해 줍니다.

사용자 변수 또는 시스템 변수에서 PATH를 찾아서 선택한 후에 편집을 클릭합니다.

MySQL이 설치된 위치 C:\Program Files\MySQL\MySQL Server 8.4\bin 를 입력하고, 확인버튼을 클릭해서 저장합니다.

커맨드도구(mysql.exe) 사용해보기

그리고, 새로운 커맨드창에서 mysql --version 를 입력합니다. 이렇게 나오면 모든 설치가 잘 된거니요.

C:\work>mysql --version
mysql  Ver 8.4.4 for Win64 on x86_64 (MySQL Community Server - GPL)

C:\work>

이제, mysql 을 이용해서 DB 서버에 접속해보겠습니다. mysql -u root -p 라고 입력하고, 비밀번호(test123)까지 입력해봅시다.

C:\work>mysql -u root -p
Enter password: *******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.4.4 MySQL Community Server - GPL

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql>

여기에서 show database; 이라고 입력하면, 존재하는 database 목록을 출력해 줍니다. 설치할 때 체크해두었던 샘플DB(sakila, world) 도 같이 보이지요?

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
6 rows in set (0.00 sec)

mysql>

사용자 계정 추가

일단 새로운 User를 하나 생성해봅시다.

-- CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호';
CREATE USER 'test_user'@'%' IDENTIFIED BY 'test123';

현재 존재하는 사용자를 볼 수 있습니다.

mysql> use mysql;
Database changed
mysql> SELECT user, host FROM user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| test_user        | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

mysql>

Database 추가

자... 그러면... 이제 Database 를 생성해봅시다.

-- CREATE DATABASE 디비이름 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE test_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

show databases; 로 Database(test_db)가 생성되었는지도 확인해봅시다.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| test_db            |
| world              |
+--------------------+
7 rows in set (0.00 sec)

mysql>

사용자에게 database 사용 권한 설정

test_usertest_db 를 사용할 수 있도록 권한을 설정해 보겠습니다.

-- GRANT ALL PRIVILEGES ON 디비이름.* to 사용자@'%';
GRANT ALL PRIVILEGES ON test_db.* to test_user@'%';

새로운 사용자로 접속해보기

일단 exit 로 mysql 을 빠져나온다. mysql에 test_user로 test_db에 재접속해봅니다.

C:\work>mysql -u test_user -p test_db
Enter password: *******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.4.4 MySQL Community Server - GPL

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql>

테이블 생성

테스트용으로 테이블을 생성해봅시다.

CREATE TABLE TB_ADMIN
(
    ADMIN_NO INT AUTO_INCREMENT NOT NULL,
    LOGIN_ID VARCHAR(20) NOT NULL UNIQUE,
    PASSWD VARCHAR(20) NOT NULL,
    NICK VARCHAR(20) NOT NULL,
    EMAIL VARCHAR(40),
    PRIMARY KEY (ADMIN_NO)
);

show tables; 를 입력하면 현재 존재하는 테이블을 볼 수 있습니다.

mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| tb_admin          |
+-------------------+
1 row in set (0.00 sec)

mysql>

다음과 같이 해당 테이블의 내용을 조회해볼 수도 있습니다. 아직 데이터가 들어있지 않으니, 아무 것도 안나오겠지요.

mysql> SELECT * FROM TB_ADMIN;
Empty set (0.00 sec)

mysql>

테이블에 데이터 추가

테스트용 샘플 데이터를 2개 넣어보겠습니다.

INSERT INTO TB_ADMIN(LOGIN_ID, PASSWD, NICK, EMAIL)
VALUES('honggildong', 'ajtwlddl', '홍길동', 'hgd@gmail.com');
 
INSERT INTO TB_ADMIN(LOGIN_ID, PASSWD, NICK, EMAIL)
VALUES('jangnara', 'dlQmsdl', '장나라', 'jnr@gmail.com');

다시 조회를 해보면, 다음처럼 2개의 데이터가 들어있는 것을 확인할 수 있을 겁니다.

mysql> SELECT * FROM TB_ADMIN;
+----------+-------------+----------+--------+---------------+
| ADMIN_NO | LOGIN_ID    | PASSWD   | NICK   | EMAIL         |
+----------+-------------+----------+--------+---------------+
|        1 | honggildong | ajtwlddl | 홍길동 | hgd@gmail.com |
|        2 | jangnara    | dlQmsdl  | 장나라 | jnr@gmail.com |
+----------+-------------+----------+--------+---------------+
2 rows in set (0.00 sec)

mysql>

데이터 수정

데이터 수정도 해볼까요? ^^

UPDATE TB_ADMIN SET NICK = '홍길똥' WHERE LOGIN_ID = 'honggildong';
UPDATE TB_ADMIN SET NICK = '짱나라' WHERE LOGIN_ID = 'jangnara';

확인해보면, NICK 이 '홍길똥'과 '짱나라'로 바뀌어 있을 거에요.

mysql> SELECT * FROM TB_ADMIN;
+----------+-------------+----------+--------+---------------+
| ADMIN_NO | LOGIN_ID    | PASSWD   | NICK   | EMAIL         |
+----------+-------------+----------+--------+---------------+
|        1 | honggildong | ajtwlddl | 홍길똥 | hgd@gmail.com |
|        2 | jangnara    | dlQmsdl  | 짱나라 | jnr@gmail.com |
+----------+-------------+----------+--------+---------------+
2 rows in set (0.00 sec)

mysql>

데이터 삭제

그러면, 마지막으로 데이터 삭제도 해봅시다.

DELETE FROM TB_ADMIN WHERE LOGIN_ID = 'honggildong';

역시 확인해보면,  '홍길똥'이 삭제되고 '짱나라'만 남은 것을 볼 수 있습니다.

mysql> SELECT * FROM TB_ADMIN;
+----------+----------+---------+--------+---------------+
| ADMIN_NO | LOGIN_ID | PASSWD  | NICK   | EMAIL         |
+----------+----------+---------+--------+---------------+
|        2 | jangnara | dlQmsdl | 짱나라 | jnr@gmail.com |
+----------+----------+---------+--------+---------------+
1 row in set (0.00 sec)

mysql>

DB 백업

exit 로 mysql 을 일단 빠져나옵니다. DB 백업을 알아보자구요. mysqldump 라는 프로그램을 사용합니다. 아래처럼 실행해주면, test_db.bak 이라는 백업파일이 생성됩니다.

C:\work>mysqldump -u root -p test_db > test_db.bak
Enter password: *******

C:\work>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: A45C-2C09

 C:\work 디렉터리

2025-04-15  오후 02:41    <DIR>          .
2025-04-15  오후 02:41             2,150 test_db.bak
               1개 파일               2,150 바이트
               3개 디렉터리  311,255,212,032 바이트 남음

C:\work>

다시, mysql 로 로그인 해서 DROP TABLETB_ADMIN 테이블을 날려줍니다. SELECT 문으로 확인해보세요. 확실히 날라갔지요.

C:\work>mysql -u test_user -p test_db
Enter password: *******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.4.4 MySQL Community Server - GPL

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> DROP TABLE TB_ADMIN;
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT * FROM TB_ADMIN;
ERROR 1146 (42S02): Table 'test_db.tb_admin' doesn't exist
mysql> exit
Bye

C:\work>

DB 복구

Database 를 복구해봅시다.

C:\work>mysql -u test_user -p test_db < test_db.bak
Enter password: *******

C:\work>

위와 같이 진행되어 복구가 완료됩니다. 이를 확인해보려면, mysql 로 다시 로그인해서 show tables; 를 입력해보고, SELECT 문으로 데이터를 조회해보면 됩니다.

C:\work>mysql -u test_user -p test_db
Enter password: *******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.4.4 MySQL Community Server - GPL

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| tb_admin          |
+-------------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM TB_ADMIN;
+----------+----------+---------+--------+---------------+
| ADMIN_NO | LOGIN_ID | PASSWD  | NICK   | EMAIL         |
+----------+----------+---------+--------+---------------+
|        2 | jangnara | dlQmsdl | 짱나라 | jnr@gmail.com |
+----------+----------+---------+--------+---------------+
1 row in set (0.00 sec)

mysql>

이 정도면, 커맨드라인 도구로 왠만한 것은 충분히 할 수 있을거에요.

GUI 도구 사용해보기

GUI도구도 여러가지가 있는데, 여기에서는 DBeaver 를 사용하겠습니다. https://dbeaver.io/ 에 들어가서 다운로드하여 설치합니다. 설치해서 실행하면 다음처럼 나옵니다.

여기에서 왼쪽 상단의 플러그 모양 아이콘 옆의 화살표를 클릭하면 MySQL을 선택할 수 있는 메뉴가 나옵니다.

Database, Username, Password 등을 입력하고, 완료버튼을 클릭해서 등록합니다. 그러면, 아래처럼 왼쪽에 DB가 등록된 것을 확인할 수 있어요. SQL 아이콘을 클릭하면, 쿼리를 작성할 수 있는 창이 생깁니다. 여기에 SELECT * FROM TB_ADMIN; 이라고 입력하고, 왼쪽에 주황색 삼각형을 클릭하면 TB_ADMIN테이블의 내용을 볼 수 있을 거에요.

이런식으로 간단하게 사용해볼 수 있습니다. root 로 로그인하면, DB 생성/삭제, 사용자 추가/삭제, 권한 설정 등의 작업도 가능합니다. 어렵지 않으니, 여기 저기 눌러보고 테스트해보세요.

이전최근