ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MariaDB 기본 개념, 사용자와 권한
    DBMS/MariaDB 2024. 2. 23. 22:08
    728x90
    반응형

    DBMS(Database Management System)

        - 웹 개발 뿐 아니라 서버(혹은 서비스 제공자 등)가 클라이언트(혹은 일반적인 사용자)에게 서비스를 제공하는데 있어, 소실되면 안되고 유지, 기억해야하는 내용을 
            SQL을 통해 쉽게 처리하기 위해 사용하는 일련의 체계

    SQL(Structured Query Language)

        - DBMS가 가지는 구조 및 데이터를 통제하기 위해 사용하는 언어. 줄여서 쿼리(Query)라고 하기도 한다.

    규칙

        - 키워드는 대문자로 작성하는 것이 권장되나, 소문자도 무방. 단, 섞어서 작성하지 않는다.
        - 모든 구성요소(스키마, 테이블, 열 등)의 이름은 (소문자) 스네이크 케이스로 명명한다.
        - 모든 구성요소 언급시 백틱(`)으로 감싼다. 따옴표가 아니니까 헷갈리지 말기
        - 문자열 리터럴은 홀따옴표(')로 감싼다   
        - 하나의 쿼리가 끝나는 경우 세미콜론(;)을 작성한다

    주석(Comment)

        - 쿼리 실행에 영향을 미치지 않고 간단한 메모를 남기기 위해 사용
        - 한 줄 주석    : 샾(#) 및 대쉬 두개(--)를 사용하여 작성. 단, -- 뒤에는 공백이 있어야 함
        - 여러 줄 주석  : /*로 시작하여 */로 끝낸다.

     

     

    사용자(user)

        - DBMS 서버에 접속하여 각종 쿼리를 실행할 수 있는 주체이자 구성요소 중 하나
        - DBMS 설치 시, 모든 권한을 가지는 최고 관리자 계정인 root가 자동 생성
        - 이러한 root 계정은 모든 권한을 가지고 있어 보안에 취약함으로 실무 프로덕트 프로젝트에서는 사용되지 않는다

    생성하기

        - 이름과 호스트가 겹치는 계정이 여러개 존재할 수 없음(이름만 겹치는 계정은 여러개 존재 가능)
    새로운 사용자를 생성하기 위해 아래 쿼리를 실행

    create user `이름`@`호스트` identified by '비밀번호';


            이름과 호스트는 구성요소임으로 백틱(`)으로 감싼다
            비밀번호는 문자열임으로 홀따옴표(')로 감싼다.
            가령, 사용자 이름이 study이고, 호스트가 localhost이며, 비밀번호가 test1234인 사용자를 생성하기 위해 아래 쿼리 실행

    create user `study`@`localhost` identified by 'test1234';



    조회하기

    존재하는 사용자를 조회하기 위해 아래 쿼리 실행

    select `user`, `host` from `mysql`.`user`;



    수정하기

    존재하는 사용자의 비밀번호를 수정하기 위해 아래 쿼리를 실행

    altet user `이름`@`호스트` identified by '새 비밀번호';



    삭제하기

        - 해당 작업은 취소될 수 없음
        - 존재하는 사용자를 삭제하기 위해 아래 쿼리 실행

    drop user `이름`@`호스트`;
    drop user `study`@`localhost`;

     

    권한

        - 사용자 이름과 호스트별로 구분하여 권한을 달리 부여할 수 있다.
        - 사용자 생성 후 아무런 권한을 부여하지 않을 경우 단순 접속(usage)권한이 부여됨

    부여하기

        - 존재하는 모든 사용자에게 권한을 부여하기 위해 아래와 같이 명령

    grant [all|부여할 권한, ...] on [*|스키마].[*|테이블] to `사용자 이름`@`호스트` [with grant option]?;


    부여할 권한 대신 all 키워드를 사용할 경우 모든 권한을 부여하게 된다. 단, grant 명령을 실행할 권한은 여기에 포함되지 않는다.


    권한을 부여할 대상이 되는 스키마 및 테이블의 이름 대신 애스터리스크(*)를 작성할 경우 모든 스키마 및 모든 테이블을 의미한다.


    with grant option을 추가하게 되면 해당 사용자가 다른 사용자(혹은 본인)에게 권한을 부여할 수 있는 권한까지 부여하게 됨으로 유의해야 한다.
    가령, study@localhost 사용자에게 모든 스키마 및 모든 테이블에 대해 모든 권한(grant 제외)을 부여하기 위해 아래와 같이 명령

    grant all on *.* to `study`@`localhost`;



    조회하기

        - 현재 접속중인 사용자의 권한을 조회하기 위해 아래 쿼리 실행

    show grants;


    다른 사용자의 권한을 조회하기 위해 아래 쿼리 실행

    show grants for `이름`@`호스트`;



    철회하기

    존재하는 사용자가 가지고 있는 권한을 철회하기 위해 아래 쿼리 실행

    revoke [all|철회할 권한,...][, grant option]? on [*|스키마].[*|테이블] from `사용자 이름`@`호스트`;


    만약 해당 사용자에게 grant 권한이 있고, 해당 권한을 철회하고 싶다면 on 키워드 전에 grant option을 명시해야 함
    가령, study@localhost 계정으로부터 grant를 포함한 모든 권한을 철회하고자 한다면 아래와 같이 명령

    revoke all, grant option on *.* from `study`@`localhost`;


            

    728x90
    반응형

    'DBMS > MariaDB' 카테고리의 다른 글

    MariaDB 함수  (0) 2024.02.25
    MariaDB 연산자  (0) 2024.02.23
    MariaDB 열과 행  (0) 2024.02.23
    MariaDB 스키마와 테이블  (0) 2024.02.23
Designed by Tistory.