2 분 소요

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 : DROPCREATE하기



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이 가지는 COMMITROLLBACK만 따로 분리한 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 사용자로 부터 DROPGRANT 권한을 회수하기 위해 아래와 같이 명령한다.

    REVOKE DROP, GRANT OPTION ON *.* FROM `study`@`localhost`;
    



권한 다시 불러오기

  • 부여하거나 회수한 권한을 즉시 적용하기 위해 아래와 같이 명령한다. 아래 명령어를 사용하지 않고 변경 사항을 적용하기 위해서는 서버를 다시 시작해야 한다.
    FLUSH PRIVILEGES;
    



권한 확인하기

  • 현재 로그인한 사용자 혹은 다른 사용자가 가지고 있는 권한을 확인하기 위해 사용한다.
    SHOW GRANTS;
    

    다른 사용자의 권한을 확인하기 위해서는 사용자 이름 및 원격 호스트를 아래와 같이 명시한다.

    SHOW GRANTS FOR `사용자 이름`@`원격 호스트`;
    





태그:

카테고리:

업데이트:

댓글남기기