Class01(dbms 서론, 사용자)
2023. 01. 25. 수업내용 정리
서론.. 사용자..
서론
DBMS
- DBMS(Database Management System)의 종류는 계층형(Hierarchical), 망형(Network), 관계형(Relational) 등 많은 종류가 있지만 요즘은 관계형 DBMS(RDBMS, Relational Database Management System)을 많이 사용한다.
- DBMS는 주로 스키마(Schema), 테이블(Table), 열(Column), 레코드(Record 혹은 Row)의 구성요소로 이루어져 있다.
- RDBMS는 테이블이 가지는 열 혹은 테이블 그 자체로 다른 구성요소와의 관계를 정의하여 무결성(Integrity)을 보장하고자 하는 것이 주된 구축 방안이다.
SQL
- SQL(Structured Query Language)은 데이터 구조 및 데이터(레코드)의 생성, 조회, 수정 및 삭제를 위한 언어이다.
- SQL은 하나의 명확한 언어는 아니고, 추상적인 표현이며, MariaDB(MySQL), Oracle, MS-SQL, PostgreSQL 등 다양한 DBMS에서 사용하는 언어를 통틀어서 SQL이라고 한다.
DDL
- DDL(Data Definition Language)은 스키마, 테이블 및 이의 구성요소(
INDEX
등)를 정의하거나 수정하기위해 사용하는 SQL 전체를 의미한다. CREATE
: 만들기ALTER
: 수정하기DROP
: 삭제하기TRUNCATE
:DROP
후CREATE
하기
DML
- DML(Data Manipulation Language)은 레코드를 추가, 조회, 수정 및 삭제하기 위해 사용하는 SQL 전체를 의미한다.
INSERT
: 추가SELECT
: 조회UPDATE
: 수정DELETE
: 삭제
DQL
- DQL(Data Query Language)은 레코드를 조회(
SELECT
)하는 SQL만 따로 분리한 SQL이다. (잘 사용하는 표현은 아님.)
DCL
- DCL(Data Control Language)은 데이터를 제어하기 위해 사용하는 SQL을 의미한다.
COMMIT
: 레코드 변경 사항을 최종 적용한다.ROLLBACK
: 레코드 변경 사항을 취소한다.GRANT
: 사용자에게 권한을 부여한다.REVOKE
: 사용자로부터 권한을 회수한다.
TCL
- TCL(Transaction Control Language)은 DCL이 가지는
COMMIT
과ROLLBACK
만 따로 분리한 SQL이다. (잘 사용하는 표현은 아님.)
사용자
- 사용자(User)는 DBMS에 접속하여 데이터베이스 구조 및 테이블, 데이터 등을 조작하고 조회할 수 있는 주체를 의미한다.
- 사용자의 구조는 다음과 같다.
[사용자 이름]@[원격 호스트]
- 사용자 이름 : 사용자 이름
- 원격 호스트 : 로그인에 사용한 ‘사용자 이름’을 이용하여 본 DBMS 서버에 접속할 수 있는 원격 호스트를 의미한다. 이 값이
localhost
인 경우 원격 접속이 제한된 계정이라는 의미이다.
만들기
- 새로운 사용자를 만들기위해 아래와 같이 명령한다.
CREATE USER `사용자 이름`@`원격 호스트` IDENTIFIED BY '비밀번호';
위에서 사용자 이름과 원격 호스트는 백틱(`)으로, 비밀번호는 홑따옴표(‘)로 감싼것에 주의한다.
조회하기
- 현재 존재하는 사용자를 확인하기 위해 아래와 같이 명령한다.
SELECT `user`, `host` FROM `mysql`.`user`;
수정하기
- 기존 사용자의 비밀번호를 수정하기 위해 아래와 같이 명령한다.
ALTER USER `사용자 이름`@`원격 호스트` IDENTIFIED BY '새로운 비밀번호';
삭제하기
- 기존 사용자를 삭제하기위 아래와 같이 명령한다.
DROP USER `사용자 이름`@`원격 호스트`;
권한 부여하기
- 존재하는 사용자에게 특정 스키마와 테이블에 대한 권한을 부여하기 위해 아래와 같이 명령한다.
GRANT [ALL|부여할 권한,...] ON [대상 스키마|*].[대상 테이블|*] TO `대상 사용자 이름`@`대상 사용자 원격 호스트`;
- 모든 권한을 부여하기 위해
ALL
이라는 키워드를 사용한다. - 특정 권한만 골라서 부여하기 위해 콤마(,)로 구분하여 여러 권한을 부여할 수 있다. 가령,
INSERT
,SELECT
,UPDATE
권한만 부여하기 위해INSERT, SELECT, UPDATE
로 명기한다. - 단, 모든 권한(
ALL
)에GRANT
명령을 실행하기 위한 권한은 포함되어 있지 않음으로 어떠한 사용자로 하여GRANT
명령을 실행할 수 있게 하기 위해 아래와 같이 명령한다.GRANT [ALL|부여할 권한,...] ON [대상 스키마|*].[대상 테이블|*] TO `대상 사용자 이름`@`대상 사용자 원격 호스트` WITH GRANT OPTION;
- 모든 권한을 부여하기 위해
권한 회수하기
- 존재하는 사용자로부터 특정 스키마와 테이블에 대한 권한을 회수하기 위해 아래와 같이 명령한다.
REVOKE [ALL|회수할 권한,...] ON [대상 스키마|*].[대상 테이블|*] FROM `대상 사용자 이름`@`대상 사용자 원격 호스트`;
만약, 어떠한 사용자가
GRANT
권한을 가지고 있고 이를 회수하기 위해서는 아래와 같이 명령한다.REVOKE [ALL|[[GRANT OPTION]?|회수할 권한,...]] ON [대상 스키마|*].[대상 테이블|*] FROM `대상 사용자 이름`@`대상 사용자 원격 호스트`;
가령,
study@localhost
사용자로 부터DROP
과GRANT
권한을 회수하기 위해 아래와 같이 명령한다.REVOKE DROP, GRANT OPTION ON *.* FROM `study`@`localhost`;
권한 다시 불러오기
- 부여하거나 회수한 권한을 즉시 적용하기 위해 아래와 같이 명령한다. 아래 명령어를 사용하지 않고 변경 사항을 적용하기 위해서는 서버를 다시 시작해야 한다.
FLUSH PRIVILEGES;
권한 확인하기
- 현재 로그인한 사용자 혹은 다른 사용자가 가지고 있는 권한을 확인하기 위해 사용한다.
SHOW GRANTS;
다른 사용자의 권한을 확인하기 위해서는 사용자 이름 및 원격 호스트를 아래와 같이 명시한다.
SHOW GRANTS FOR `사용자 이름`@`원격 호스트`;
댓글남기기