흰둥이는 코드를 짤 때 짖어 (왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!)

(MySQL) 사용자 본문

MySQL

(MySQL) 사용자

흰둥아솜사탕 2023. 3. 21. 10:08
728x90
반응형

1. 사용자 추가하기

  • MySQL 8.0 Commane Line Client 'root' 계정으로 로그인

  • 로컬에서 접속 가능한 사용자 추가하기
create user '사용자명'@'localhost' identified by '사용자 비밀번호';
create user 'apple'@'localhost' identified by '1111';
  • DB 권한 부여하기
# grant all privileges on *.* to '사용자'@'localhost'; # 모든 DB에서 접근 가능
# grant all privileges on 데이터베이스명.* to '사용자'@'localhost';
grant all privileges on *.* to 'apple'@'localhost';
flush privileges; # 새로운 세팅을 적용함

✅ 할당 권한 상세 옵션

  • create, drop, alter: 테이블에 대한 생성, 삭제, 변경 권한
  • select, insert, update, delete: 테이블의 데이터를 조회, 삽입, 변경, 삭제에 대한 권한
  • all: 모든 권한
  • usage: 권한을 부여하지 않고 계정만 생성
# grant select, .. on 데이터베이스명.테이블명 to '사용자'@'localhost';

✅ IP 권한 상세 옵션

  • %: 모든 IP에서 접근이 가능
  • 127.0.0.1: localhost에서 접근이 가능
# grant select, .. on 데이터베이스명.테이블명 to '사용자'@'%';
# grant select, .. on 데이터베이스명.테이블명 to '사용자'@'특정 ip주소';

 

apple 전용 데이터베이스 생성하여 확인

show databases;

apple 계정의 databases

2. 문제

  • apple 데이터베이스에 kdt.member 테이블을 복사하고 해당 테이블의 select 권한만 가능한 orange 계정을 만들어보자.
create database apple; # apple 데이터베이스 생성
use apple;
create table apple.member(select * from kdt.member);
apple데이터베이스에 member테이블을 생성하는데 kdt데이터베이스에 있는 member테이블을 복사해온다.
create user 'orange'@'localhost' identified by '1111';
grant select on apple.member to 'orange'@'localhost';
flush privileges;
orange라는 사용자를 만들어 apple데이터베이스에 있는 member테이블에 select 기능의 권한을 부여하였다.

orange 사용자 전용 database 생성

use apple;
select * from member;
update member set point = 500 where userid='berry'; # Error Code: 1142. UPDATE command denied to user 'orange'@'localhost' for table 'member'

apple.member테이블

orange 계정에 update 권한이 없어 에러 발생

3. 사용자 목록 조회

use mysql;
select user, host from user;

MySQL 데이터베이스에서 user를 조회할 수 있다.

4. 사용자 제거

drop user '사용자명'@'localhost'; # 추천!
delete from user where user=계정명;

 

5. 사용자 권한 조회

# show grants for '계정명'@'localhost';
show grants for 'apple'@'localhost';
show grants for 'orange'@'localhost';

apple(왼쪽)과 orange(오른쪽) 계정의 권한

6. 사용자 권한 제거

# revoke 권한명 privileges on 데이터베이스명.테이블명 from '계정명'@'localhost';
revoke all privileges on *.* from 'apple'@'localhost';

권한이 없어진 apple 계정

 

728x90
반응형

'MySQL' 카테고리의 다른 글

(MySQL) 기초 문법(트랜젝션)  (0) 2023.03.21
(MySQL) 기초 문법(뷰)  (0) 2023.03.21
(MySQL) 기초 문법(테이블 복사)  (0) 2023.03.20
(MySQL) 기초 문법(문자열 함수)  (0) 2023.03.20
(MySQL) 기초 문법(서브 쿼리)  (0) 2023.03.20
Comments