(MySQL) 사용자 및 권한 설정!

1. 사용자

1-1 사용자 계정 추가

1) MySQL 8.0 명령줄 클라이언트 루트 계정으로 로그인합니다.(WorkBench에서도 실행할 수 있습니다!)


루트 계정 비밀번호 입력 후 로그인

2) 로컬로 연결할 수 있는 사용자 추가

# 구문
create user '사용자명'@'localhost' identified by '사용자 비밀번호';


3) 데이터베이스 권한 부여

# 구문
grant all privileges on *.* to '사용자'@'localhost';     -- 모든 DB, 테이블 접근 가능
grant all privileges on DB명.* to '사용자'@'localhost';  -- 특정 DB, 모든 테이블 접근 가능
flush privileges;  -- 새로운 세팅을 적용까지 해야됨


apple이라는 데이터베이스 생성

Apple 데이터베이스의 모든 테이블에 대한 사용자 apple 전체 권한 부여

1-2 사용자 목록 가져오기

use mysql;   -- mysql DB접근
select user, host from user;



1-3 사용자 계정 삭제

drop user 계정명;  -- 추천(권한도 같이 삭제됨)
delete from user where user = 계정명;

2. 권한

2-1 승인하다

자세한 할당 권한 옵션

  • 생성, 삭제, 변경: 테이블을 생성, 삭제, 변경할 수 있는 권한입니다.
  • 선택, 삽입, 업데이트, 삭제 : 테이블 데이터를 검색, 삽입, 수정, 삭제할 수 있는 권한
  • *: 모든 권한
  • 사용법: 권한을 부여하지 않고 계정 생성(기본값)
grant select, delete... on DB명.테이블명 to '사용자'@'localhost';

IP 권한에 대한 세부 옵션

  • %: 모든 IP에서 액세스 가능
  • 127.0.0.1: localhost에서 액세스 가능
grant select on DB명.테이블명 to '사용자'@'%'; -- 모든 IP 접근 가능
grant select on DB명.테이블명 to '사용자'@'특정 IP';

2-2 사용자 권한 표시

show grants for '계정명'@'localhost';

# 예시
show grants for 'apple'@'localhost';
show grants for 'orange'@'localhost';

2-3 사용자 권한 제거

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

kdt.member 테이블을 Apple 데이터베이스에 복사하고 해당 테이블만 선택할 수 있는 주황색 계정을 생성합니다.

create database applel;   -- apple 데이터 베이스 생성
use apple;

create table apple.member(select * from kdt.member);    -- kdt의 데이터베이스 member복사

select * from member;


create user 'orange'@'localhost' identified by '1111';    -- orange 계정 생성
grant select on apple.member to 'orange'@'localhost';     -- select 권한 부여
flush privileges;

오렌지 계정으로 DB에 접속하여 테스트 해보겠습니다.


새 연결 등록


새로운 연결이 생성됩니다

사용자 계정 생성 시 생성한 비밀번호를 입력하세요.


select * from member;


# 에러: update에 대한 권한 없음!
update member set point = 500 where userid = 'cherry';