MariaDB에서 계정을 생성하고 권한을 주는 것까지 설정해보려고 한다.
0. 실습환경
Docker에서 mariadb 10.4를 설치하였다. 여기서 실습을 해보자.
docker run -d -p {호스트포트}:{컨테이너 포트} \
-e {set environment varables:여기서는 루트 계정 password 설정} \
-v {host volumn 경로}:{컨테이너에 mount할 경로} \
-name {container name 설정} {mariadb image name}
MariaDB 유저 생성
이제 실습 환경에서 유저를 생성해 보자
1 접속
docker exec -it {mariaDB name} bash # 컨테이너 접속
mysql -u root -p # mariaDB 접속
이제 데이터베이스(스키마)를 만들어보자
CREATE DATABASE db_name ...;
tutorial이라는 데이터베이스를 만들고 여기에 접속하여서 유저를 생성하고 권한을 부여해 보자.
2 User 생성하기
user를 생성할 때는 접속 ip를 설정할 수 있다. 만약 '%'로 설정한다면 외부의 모든 ip에서 접속이 가능하다. 와일드카드와 동일한 기능이다.
CREATE USER foo@localhost IDENTIFIED BY {password}; # localhost 에서만 접속 가능
CREATE USER foo2@192.X.X.X IDENTIFIED BY {password}; # 192.X.X.X 에서만 접속 가능
CREATE USER foo3@'%' IDENTIFIED BY {password}; # 외부 모든 ip에서 접속 가능
아까 만들었던 foo3으로 접속을 해보자
NOTE!
만약 로컬 환경 내에서 mysql server를 만들었다면 localhost로만 접속하는 계정인 foo만으로도 접속이 가능할 것이다.
하지만 현재 실습환경은 Docker 컨테이너로 DB 서버를 띄운 형태이므로 foo3(외부 접속도 가능한 계정)으로 접속해야 한다.
3 User 권한 부여하기
현재 데이터베이스를 살펴보면 information_schema밖에 안 보인다. 우린 분명 tutorial 데이터베이스도 생성했는데 안 보이는 이유는 유저가 데이터베이스에 접근할 권한이 없기 때문에다.
먼저 데이터베이스를 볼 수 있권한을 부여해 보자. 우선 비교를 위해 스키마를 하나 더 만들자.(root 계정)
그런 다음 foo3에게 tutorial 데이터베이스에 대한 권한만 주자.
GRANT ALL PRIVILEGES ON {database}.{tablename} TO {계정명};
GRANT ALL PRIVILEGES ON tutorial.* TO foo3@'%'; # tutorial 데이터베이스의 모든 테이블의 사용가능한 권한을 foo3@'%' 에게 부여한다.
그리고 다시 확인해 보면
NOTE
권한에 대한 상세 설명은 공식 문서를 참고해 보자. 만약 공식문서를 보기가 어색하면 해당 블로그를 참고하자.
여기까지 권한 부여를 보았다 다음 포스팅에서는 권한 그룹을 생성해서 그룹으로 권한을 설정하는 방법을 살펴보자.
참고
https://mariadb.com/kb/en/create-database/
https://mariadb.com/kb/en/create-user/
https://mentha2.tistory.com/71
'Database' 카테고리의 다른 글
MariaDB 그룹 권한 부여하기 (0) | 2023.02.06 |
---|