본문 바로가기
DataBase

MySQL 데이터베이스 생성,삭제,조회,유저 생성, 권한 부여

by 스파이디웹 2020. 10. 17.
728x90

MySQL의 계층구조

위의 그림에서 알 수 있다시피 3계층 구조로 데이터베이스가 존재하지 않습니다. 실제로도 데이터베이스와 스키마를 동의어로 취급합니다.

 

 

●데이터베이스 생성

CREATE DATABASE 데이터베이스명;

 

●데이터베이스 삭제

DROP DATABASE 데이터베이스명;

 

●데이터베이스 조회

SHOW DATABASES;

 

●유저 생성

CREATE USER 유저명;

 

create user 사용자ID;   // 사용자 추가

 

create user userid@localhost identified by '비밀번호';

// 사용자(user)를 추가하면서 패스워드까지 설정

기존에 사용하던 계정에 외부 접근 권한을 부여하려면, Host를 '%' 로 하여 똑같은 계정을 추가한다

 

create user 'userid'@'%' identified by '비밀번호' // '%' 의 의미는 외부에서의 접근을 허용


다른방법으로는 CREATE USER 유저명; 이후에

USE mysql;     // mysql database 선택
INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));
INSERT INTO user (Host, User, Password) VALUES ('%', '계정아이디', password('비밀번호'));
FLUSH privileges;

 

●유저 삭제

DROP USER 유저명;

 

drop user 유저명@'%';

drop user 유저명@localhost;

 

유저 조회

use mysql; 이후에

select * from user;

 

●계정에 권한 부여

GRANT ALL PRIVILEGES ON DB명.테이블 TO 계정아이디@host IDENTIFIED BY '비밀번호';

// 계정이 이미 존재 하는데 'identified by '비밀번호' 부분을 추가하면 비밀번호가 변경된다

 

GRANT ALL privileges ON DB명.* TO 계정아이디@locahost IDENTIFIED BY '비밀번호';


GRANT ALL privileges ON DB명.* TO 계정아이디@'%' IDENTIFIED BY '비밀번호';

 

grant all privileges on DB명.* to userid@'%' identified by '비밀번호' ;  //모든 원격지에서 접속 권한 추가 

 

host에 '200.100.%' 로 하면 IP주소가 200.100.X.X 로 시작되는 모든 IP에서 원격 접속을 허용한다는 의미

host에 '200.100.100.50' 으로 하면 IP주소가 200.100.100.50 인 곳에서만 원격 접속을 허용한다는 의미

 

grant all privileges on test.* to userid@localhost identified by '비밀번호';

// user 에게 test 데이터베이스 모든 테이블에 대한 권한 부여 

 

grant select, insert, update on test.* to user@localhost identified by '비밀번호';

// user 에게 test 데이터베이스 모든 테이블에 select, insert, update 권한 부여

 

grant select, insert, update on test.* to user@localhost;   -- 패스워드는 변경없이 권한만 부여하는 경우

// user 에게 test 데이터베이스 모든 테이블에 select, insert, update 권한 부여

 

grant all privileges on *.* to user@localhost identified by '비밀번호' with grant option;

// user 에게 모든 데이터베이스 모든 테이블에 권한 부여

// 전역 권한은 모두 광범위한 보안문제가 수반되므로 권한을 허용하는 경우 신중해야 함

 

flush privileges;     // 변경된 내용을 메모리에 반영(권한 적용)

 

●계정의 권한 조회

SHOW GRANTS FOR test@localhost;  -- userid 와 host명까지 붙여서 검색해야 함

 

SHOW GRANTS FOR test@'%';

 

SHOW GRANTS FOR test@'200.100.100.50';

 


●계정에 권한 취소

revoke all on DB명.테이블명 from 사용자ID;     // 모든 권한을 삭제

728x90

댓글