docker pull mysql:8.0.29
docker run -v data:/db/mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<비밀번호> -e TZ=Asia/Seoul --name <도커 컨테이너 이름> mysql:8.0.29 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
-v data:/db/mysql
: /var/lib/docker/volumes/ 경로 안에 data 디렉토리가 생긴다.
접근할려면
- sudo ls /var/lib/docker
- sudo su
docker exec -it <컨테이너 이름> /bin/bash
mysql -u root -p
# password는 위에서 생성한 비밀번호(MYSQL_ROOT_PASSWORD)
mysql> create database [데이터베이스 이름];
mysql> show databases;
mysql> use [데이터베이스 이름];
CREATE USER '유저 이름'@'%' IDENTIFIED BY '비밀번호';
# 특정 DB에 모든 권한 부여
GRANT ALL PRIVILEGES ON [데이터베이스 이름].* TO '유저 이름'@'%';
위 명령어로 권한을 줄려고 하면 아래와 같은 에러가 발생한다.
1410 (42000): You are not allowed to create a user with GRANT
👉 해결 방법은 루트 유저에게 권한을 주면 된다.
- 루트 유저로 mysql 접속하여 권한 부여
mysql> grant all privileges ON *.* TO 'root'@'%' with grant option;
mysql> grant all privileges on [데이터베이스 이름].* to '[유저 이름]'@'%' with grant option;
- 특정 유저에게 권한을 주었으면, 바로 루트 유저에게 주었던 권한은 없앤다.
mysql> revoke all on *.* from root@'%'; mysql> flush privileges;
위 명령어를 마친 후
mysql -u '[유저 이름]' -p
를 입력use [데이터베이스 이름];
을 통해 생성한 계정으로 데이터베이스에 접근 되는지 확인하면 된다.