매번 user를 생성할 때마다 헷갈리고, 뭐 하나 빼먹으면 검색하게되어서 너무 불편하고..
그냥 한 번에 정리해보려고 한다.
Database에서 user(schema)를 생성해보자.
Oracle
USER 생성하기
x
-- CREATE USERCREATE USER myadmin IDENTIFIED BY myadminpwd;CREATE USER구문으로 myadmin이라는 USER를 생성한다.IDENTIFIED BY구문으로 myadmin이라는 USER의 PASSWORD를 지정한다.
USER 권한 지정
x
-- GRANT ROLEGRANT CONNECT, RESOURCE, DBA TO myadmin;-- GRANT ALL PRIVILEGEGRANT ANY PRIVILEGE TO myadmin;-- GRANT TABLESPACEGRANT UNLIMITED TABLESPACE TO myadmin;ALTER USER myadmin QUOTA 50M ON MYTABLESPACE1;ALTER USER myadmin QUOTA UNLIMITED ON MYTABLESPACE2;GRANT A TO B구문으로 B라는 USER에게 A 권한을 부여한다.CONNECT,RESOURCE,DBA는 ROLE로, USER에게 부여할 수 있는 권한 들을 역할에 따라 묶어놓은 것이다. 해당 위치에 ROLE이 아니라 그냥 원하는 권한들만 입력해서 부여해도 되고, 원하는 권한들을 묶어 ROLE을 새로 생성하여 부여해도 된다. (권한부여 참고)CONNECT:
CREATE SESSION: 해당 USER가 DATABASE에 접근할 수 있는 권한이다.
: 이 권한을 빼먹고 USER를 생성하면 해당 스키마로는 DB에 접근이 불가능하다.
RESOURCE:
CREATE CLUSTER,CREATE INDEXTYPE,CREATE OPERATOR,CREATE PROCEDURE,CREATE SEQUENCE,CREATE TABLE,CREATE TRIGGER,CREATE TYPE: 인덱스, 프로시저, 시퀀스, 테이블, 트리거 등등.. 자원들을 생성할 수 있다.
: ORACLE 내에서 기본적인 CRUD를 사용하려면 부여해주면 된다.
DBA: 이름에서부터 뿜어나오는 멋짐이 있다. 모든 시스템 권한이 부여되어 있는 ROLE이다.
: 로컬에서 실습할 때는 DBA 권한을 가지고 진행하는 것이 편하고 좋지만, 실무에서 해당 역할을 함부로 부여해서는 안된다.
권한명 대신
ANY PRIVILEGE라는 키워드를 넣어주면 해당 USER에게 모든 권한을 부여할 수 있다. 이 또한 주의해서 사용해야 한다.GRANT UNLIMITED TABLESPACE를 통해 모든 테이블스페이스로의 접근 권한을 부여할 수 있다. 오라클 버전에 따라RESOURCE권한을 주면 주어지기도 한다.또는
QUOTA를 제한할 수 있다.CREATE문 뒤에 붙여서 사용해도 되고, 생성 후ALTER문으로 변경해줄 수도 있다.
MySQL(MariaDB)
USER 생성하기
x
-- CREATE USERCREATE USER 'myadmin'@'localhost' IDENTIFIED BY 'myadminpwd';CREATE USER구문으로 myadmin이라는 USER를 생성한다.@뒤의localhost는 호스트를 입력해주면 된다. 지금 우리는 로컬에서 생성하고, 로컬에서 DB에 접근하여 사용할 것이므로localhost를 입력한다. 만약 다른 서버에서 접근해야한다면, 접근 서버의 IP/host를 입력하거나%와일드카드를 사용해도 된다.IDENTIFIED BY구문으로 myadmin이라는 USER의 PASSWORD를 지정한다.
USER 권한 지정
x
-- GRANT PRIVILEGESGRANT SELECT, INSERT ON mydatabase.mytable TO 'myadmin'@'localhost';GRANT ALL PRIVILEGES ON * . * TO 'myadmin'@'localhost' WITH GRANT OPTION;- 오라클과 마찬가지로
ALL PRIVILEGES키워드를 통해 모든 권한을 부여할 수 있다.SELECT,INSERT등 특정 권한을 입력해주어도 된다. 데이타베이스명.테이블명으로 권한을 지정할 DB 및 테이블을 지정할 수 있는데, 아스타(*) 와일드카드를 통해 전체를 지정할 수 있다. 물론데이터베이스명.*로 특정 DB의 모든 테이블 권한주기도 가능하다.WITH GRANT OPTION을 뒤에 적어주면, 해당 유저는 본인이 가지고 있는 권한을 다른 유저에게 부여할 수 있다.
- 오라클과 마찬가지로
MS SQL Server
USER 생성하기
x
-- CRETE LOGINCREATE LOGIN myadmin WITH PASSWORD = 'myadminpwd';-- CREATE USERCREATE USER myadmin FOR LOGIN myadminpwd;CREATE LOGIN A WITH PASSWORD=B또는CREATE USER A FOR LOGIN B로 USER(LOGIN) 을 생성할 수 있다.LOGIN: SQL Server에 대한 액세스 권한USER: LOGIN 권한에 비해 더 많은 권한을 가짐. 데이터베이스 액세스 권한
USER 권한 지정
x
-- GRANT PRIVILEGESGRANT EXECUTE ON mytest TO myadmin AS myRole;GRANT ALL PRIVILEGES TO myadmin WITH GRANT OPTION;- 마찬가지로
ALL PRIVILEGES키워드를 통해 모든 권한을 부여할 수 있다.SELECT,INSERT등 특정 권한을 입력해주어도 된다. - 권한 부여 옵션 및 권한 부여에 대한 자세한 내용은 microsoft docs 참고.
- 마찬가지로
'공부 > database' 카테고리의 다른 글
| [Oracle] CHARSET, 한글 바이트 수 확인하기 (0) | 2020.10.25 |
|---|---|
| [Oracle] Database 접속 schema id, password 변경하기 (0) | 2020.10.25 |
| [Oracle] Partition Table (0) | 2019.05.19 |
댓글