MySQL

(7)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를 이용해 수정
  • 뷰의 내용을 수정하면 본 테이블의 내용도 같이 수정됨
  • 본 테이블에 제약조건에 맞지 않으면 수정이 불가능 하다.