ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (7)MySQL_기본문법
    MySQL 2023. 3. 24. 17:18
    728x90

    MySQL 사용자

    1. 사용자 추가하기

    • MySQL 8.0 Command Line Client 'root' 계정으로 로그인
    • 로컬에서 접속 가능한 사용자 추가하기
    • create user '사용자명'@'localhost' identified by '사용자 비밀번호';
    • create user 'apple'@'localhost' identified by '1111';
    • DB 권한 부여하기
    • grant all privilenges on *.* to '사용자'@'localhost'; #모든 DB에 접근 가능
    • grant all privilenges on 데이터베이스명.* to '사용자'@'localhost';
    • flush privileges; # 새로운 세팅을 적용함

    ✔ 할당 권한 상세 옵션

    • create, drop, alter : 테이블에 대한 생성, 삭제, 변경, 권한
    • select, insert, update, delete: 테이블의 데이터를 조회, 삽입, 변경, 삭제에 대한 권한
    • all: 모든 권한
    • usage: 권한을 부여하지 않고 계정만 생성
    • 예) grant select on 데이터베이스명.테이블명 to '사용자'@'localhost';
      다른 권한도 주고싶다면 select 옆에 , 로 이어서 쓰면된다.

    ✔ IP 권한 상세 옵션

    • %: 모든 IP에서 접근이 가능
    • 127.0.0.1: localhost에서 접근이 가능member
    • 예) grant select on 데이터베이스명.테이블명 to '사용자'@'%'
    • 예) grant select on 데이터베이스명.테이블명 to '사용자'@'특정 IP주소'

    2. 사용자 계정 삭제하기

    • drop user '사용자명' @ 'localhost';

    orange 계정을 만들어 apple 데이터베이스에 test.member 테이블을 복사하고 해당 테이블의 select 권한만 가능한 orange 계정을 만들어보자.

    create table apple.member like test.member; # 테이터베이스 만들기
    insert into apple.member select * from test.member; # 데이터베이스 복사
    create user 'orange'@'localhost' identified by '1111'; # orange 계정 만들기
    grant select on apple.member to 'orange'@'localhost'; # 권한부여
    flush privileges; # 완료

     

    orange로 로그인 후 테스트

    use apple;
    select * from member;

    update member set point = 500 where userid = 'berry'; # update는 권한을 주지 않아 오류가 나온다.

     

    사용자 목록 조회

    use mysql;
    select user, host from user;

    사용자 권한 조회하기

    use mysql;
    select user, host from user;

    사용자 제거

    drop user 계정명; # 추천!
    delete from user where user = 계정명;

    사용자 권한 조회하기

    • show grants for '계정명'@'localhost'

    show grants for 'apple'@'localhost';


    show grants for 'orange'@'localhost';

    • apple의 member table에 select 권한을 주어서 추가된 것을 볼 수 있다.

    사용자 권한 제거하기

    • revoke 권한명 privileges on 데이터베이스명.테이블명 from 계정명 '계정명'@'localhost';

    revoke all privileges on apple.member from 'orange'@'localhost'; # orange계정의 member에 대한 권한 제거

    뷰(view)

    • 가상의 테이블을 생성
    • 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음

    뷰를 만드는 이유

    • SQL 코드를 간결하기 만들기 위함
    • 삽입, 삭제, 수정, 작업에 제한 사항을 가짐
    • 내부 데이터를 전체 공개하고 싶지 않을 때

    create view 뷰이름 as 쿼리 ...

    select * from member;
    select userid, username, hp , gender from member;
    create view vw_member as select userid, username, hp, gender from member;
    select * from vw_member;


    select * from profile;

    member의 userid, username, hp와 profile의 mbti를 출력하는 뷰(vw_memberprifile)를 만들고 select만 할 수 있는 melon 계정을 생성

    select m.userid, m.username, m.hp, p.mbti
     from member m join profile p on m.userid = p.userid;

    create view vw_memberprifile as select m.userid, m.username, m.hp, p.mbti
     from member m join profile p on m.userid = p.userid;
    select * from vw_memberprifile;

    create user 'melon'@'localhost' identified by '1111';
    grant select on test.vw_memberprifile to 'melon'@'localhost';
    flush privileges;
    show grants for 'melon'@'localhost';

    melon으로 접속 후 테스트

    select * from member; # 에러
    select * from vw_memberprifile;

    뷰 수정하기

    • alter view 뷰이름 as 쿼리...

    뷰 대체

    • create or replace view 뷰이름 as 쿼리 ...

    create or replace view vw_memberprifile as select m.userid, m.username, m.hp, p.mbti
     from member m join profile p on m.userid = p.userid;

    뷰 삭제하기

    drop view vw_member;
    select * from vw_member; # 삭제를 해서 오류가 나온다.

    뷰 수정하기

    • update를 이용해 수정
    • 뷰의 내용을 수정하면 본 테이블의 내용도 같이 수정됨
    • 본 테이블에 제약조건에 맞지 않으면 수정이 불가능 하다.

    'MySQL' 카테고리의 다른 글

    (9)MySQL_기본문법  (2) 2023.03.24
    (6)MySQL_기본문법  (0) 2023.03.23
    (5)MySQL_기본문법  (5) 2023.03.23
    (4)MySQL_기본문법  (0) 2023.03.21
    (3)MySQL_기본문법  (0) 2023.03.21

    댓글

Designed by Tistory.