본문 바로가기
Database

[MariaDB] 사용자 관리

by qoth_0 2023. 11. 24.
728x90
반응형

사용자관리

  • 신규 사용자 생성
    • CREATE USER 'testuser'@'localhost' IDENTIFIED BY ‘testpw’;
      • 어떤 곳에서도 원격접속을 가능하도록 하려면 localhost대신 % 기호 사용
  • 사용자 목록 조회
    • SELECT * FROM mysql.user;
  • 특정DB의 특정테이블에 특정권한 부여
    • GRANT SELECT ON board.author TO ‘testuser'@'localhost';
  • 특정DB의 특정테이블에 특정권한 뺏기
    • REVOKE SELECT ON board.author FROM ‘testuser'@'localhost';
  • 권한 변경사항 적용
    • FLUSH PRIVILEGES;
  • 특정 사용자 권한 조회
    • SHOW GRANTS FOR 'testuser'@'localhost';
  • 사용자 삭제
    • DROP USER 'testuser'@'localhost';

  • 실습

    author 테이블에 Select 권한만 부여한 testuser 사용자 생성하기

    CREATE USER 'testuser'@'localhost' IDENTIFIED BY '1234'; -- 신규 사용자 생성
    show grants for 'testuser'@'localhost'; -- 특정 사용자 권한 조회
    GRANT INSERT ON board.author TO 'testuser'@'localhost'; -- author 테이블에 INSERT 권한 부여
    REVOKE INSERT ON board.author FROM 'testuser'@'localhost'; -- INSERT 권한 해제
    GRANT SELECT ON board.author TO 'testuser'@'localhost'; -- SELECT 권한 부여
    FLUSH PRIVILEGES; -- 변경사항 적용
    show grants for 'testuser'@'localhost';

    → SELECT 권한 부여 완료

    workbench 홈 - MySQL Connections - +버튼 클릭

    Connection Name, Username(생성한 사용자이름) 채우기 - Store in Vault

    Password(사용자 생성 시 비밀번호) 채우기 - OK - OK

    만들어진 testuser로 접근해서 test 해보자

    use board;
    select * from author;
    select * from post;

    → post 테이블은 권한이 없기 때문에 조회 불가능

    INSERT INTO `board`.`author` (`id`, `name`) VALUES ('9', 'test');

    → author 테이블의 SELECT 권한만 있기 때문에 INSERT 불가능

VIEW

  • 뷰(View)는 데이터베이스의 테이블과 유사한 구조를 가지지만, 가상의 테이블로서 실제 데이터를 저장하지 않는 데이트베이스 - 실제 데이터베이스를 참조만 함
  • CREATE VIEW 뷰네임 AS SELECT 컬럼1, 컬럼2,.. FROM 테이블명; - 뷰 생성
  • SLELCT * FROM 뷰네임; - 뷰 조회
  • 특징
    • 복잡한 쿼리 결과를 뷰로 생성해두면, 이후에는 뷰를 간단한 쿼리로 호출
    • 뷰를 사용하여 특정 사용자에게 테이블의 일부 데이터만을 보여주는 것이 가능
      • GRANT를 통해 뷰에 대한 권한만 부여
      • GRANT SELECT ON [데이터베이스 이름] [뷰 이름] TO ‘testuser’@’localhost’;
      • FLUSH PRIVILEGES;
    • 뷰를 사용하면 필요한 컬럼만 선택하여 보여줄 수 있음
  • 실습
    • author에 name, email만 조회가능한 VIEW 만들기
    CREATE VIEW author_for_view AS
    SELECT name, email
    FROM author;
    
    SELECT * FROM author_for_view;
    • testuser의 기존 AUTHOR 관련 VIEW 테이블에 조회 권한 부여
    CREATE USER 'testuser'@'localhost' IDENTIFIED BY '1234'; 
    GRANT SELECT ON author_for_view TO 'testuser'@'localhost'; 
    FLUSH PRIVILEGES; 
    
    show grants for 'testuser'@'localhost'; 

728x90
반응형

'Database' 카테고리의 다른 글

[MariaDB] DB Dump  (1) 2023.11.24
[MariaDB] 저장 프로시저  (1) 2023.11.24
[MariaDB] INDEX  (0) 2023.11.24
[MariaDB] GROUP BY  (0) 2023.11.24
[MariaDB] JOIN  (1) 2023.11.22