티스토리 뷰

로컬에서 도커 이미지로 MySQL을 실행하고 user 생성 및 데이터베이스 생성 후 권한을 부여하는 방법을 살펴보겠습니다.

 

일단, 먼저 도커 설치는 마무리가 된 것으로 생각하겠습니다.

 

1. docker-compose.yml 파일 생성

아래와 같이 docker-compose.yml 파일을 작성합니다.

version: "3"
services:
  db:
    image: mysql:latest
    container_name: mysql-server
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root123
    command: # 명령어 실행
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./data/:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)

 

2. docker-compose 명령 실행

아래 명령을 통해 도커 이미지를 컨테이너로 띄웁니다.

$ docker-compose up -d

 

3. docker 컨테이너 내 bash 접속

아래 명령을 통해 현재 실행된 컨테이너의 bash에 접속합니다.

$ docker exec -it CONTAINER_NAME bash

 

4. mysql 접속

아래 명령어를 통해 root 사용자로 mysql에 접속합니다. 비밀번호는 docker-compose.yml 파일에 정의한 MYSQL_ROOT_PASSWORD를 입력하면 됩니다.

root@343gkj2g3:/# mysql -u root -p

 

 

5. database 확인 및 생성

아래 명령을 통해 데이터베이스를 확인하고 새로운 데이터베이스를 추가합니다.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql> create database test_db;
Query OK, 1 row affected (0.01 sec)

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

 

6. user 확인 및 생성 후 데이터베이스에 대한 권한 부여

아래 명령들을 통해 새로운 testuser를 생성하고 위에서 생성한 test_db에 대한 모든 권한을 부여합니다.

mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)

mysql> create user 'testuser'@'%' identified by 'testuser123';
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for testuser@'%';
+----------------------------------------+
| Grants for testuser@%                  |
+----------------------------------------+
| GRANT USAGE ON *.* TO `testuser`@`%`   |
+----------------------------------------+
1 row in set (0.00 sec)

mysql> grant all privileges on test_db.* to testuser@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> show grants for testuser@'%';
+--------------------------------------------------------+
| Grants for testuser@%                                  |
+--------------------------------------------------------+
| GRANT USAGE ON *.* TO `testuser`@`%`                   |
| GRANT ALL PRIVILEGES ON `test_db`.* TO `testuser`@`%`  |
+--------------------------------------------------------+
2 rows in set (0.01 sec)

 

이렇게 한 뒤, DataGrip이나 다른 DB Client 툴을 통해 새로 생성한 user와 database로 접속이 가능합니다. 이후 테이블 생성 등과 관련해서는 DataGrip을 사용할 예정입니다.

'기타' 카테고리의 다른 글

[Gitlab] ssh key 생성 및 등록  (0) 2022.03.01
Docker 기본 명령어  (0) 2022.02.12
Github 사용하기 - 동시에 여러 작업 진행  (0) 2020.03.07
Github 사용하기 - Local에서 Branch 이용  (0) 2020.03.07
Github 사용하기  (0) 2020.03.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함