사용자와 권한
사용자 조회
use mysql;
select user, host from user;
현재 사용자 확인(whoami)
SELECT USER();
사용자 생성
create user '사용자'@'host' identified by '비밀번호';
# ex) 내부 접근을 허용하는 사용자 추가
create user 'test'@'localhost' identified by '0000';
새로 생성한 유저가 가진 USAGE 권한은 DB에 대한 어떤 권한도 없음을 의미한다.
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password |
사용자 권한 부여
# 전체 DB에 전체 권한 추가
grant all on *.* to test@localhost;
# 전체 DB에 대한 select, insert 권한 추가
grant select, insert on *.* to test@localhost;
# 특정 DB(mydb)에 대한 전체 권한 추가
grant all on mydb.* to test@localhost;
# 특정 DB(mydb)에 대한 select, insert 권한 추가
grant select, insert on mydb.* to test@localhost;
# 특정 DB(mydb)에 포함된 특정 Table(mytb)대한 전체 권한 추가
grant all on mydb.mytb to test@localhost;
# 특정 DB(mydb)에 포함된 특정 Table(mytb)에 대한 select, insert 권한 추가
grant select, insert on mydb.mytb to test@localhost;
권한 생성 부여 한번에
grant all privileges on *.* to '사용자'@'localhost' identified by '비밀번호';
# example
grant all privileges on *.* to 'test'@'localhost' identified by '0000';
# 권한 반영
FLUSH PRIVILEGES;
권한 확인
SHOW GRANTS FOR CURRENT_USER();
show grants for test@localhost;
권한 수정 삭제
# db1에 대한 insert, update 권한을 삭제
revoke insert, update on db1.* from user;
# 사용자 전체 insert 권한 삭제
revoke insert on *.* to test@localhost;
사용자 삭제
drop user test@localhost;
테이블에 적용된 권한 보기
SELECT
GRANTEE,
TABLE_SCHEMA,
TABLE_NAME,
PRIVILEGE_TYPE
FROM
INFORMATION_SCHEMA.TABLE_PRIVILEGES
WHERE
TABLE_SCHEMA = 'pgm'
AND TABLE_NAME = 'tbl_new_del_pgm';
# or
SELECT * FROM information_schema.TABLE_PRIVILEGES
WHERE GRANTEE = "'username'@'hostname'"
AND TABLE_NAME = 'your_table_name';
인덱스 관련
적용된 인덱스 조회
SHOW INDEX FROM your_table_name;
SELECT * FROM information_schema.statistics
WHERE table_name = 'your_table_name'
AND table_schema = 'your_database_name';
테이블 정의 보기
DESC table_name;
프로세스 관련
현재 실행 중인 스레드 보기
SHOW GLOBAL STATUS LIKE '%Threads%';
show processlist;
최대 커넥션 수 보기
SHOW VARIABLES LIKE '%max_connection%';
테이블 고치기
check table 테이블명
repair table 테이블명
optimize table 테이블명
지정 가능한 권한 목록
chat gpt 기반이라 실제와 다를 수 있음
- ALL PRIVILEGES: 모든 권한을 부여합니다.
- SELECT: 데이터를 조회할 수 있는 권한.
- INSERT: 데이터를 삽입할 수 있는 권한.
- UPDATE: 데이터를 업데이트할 수 있는 권한.
- DELETE: 데이터를 삭제할 수 있는 권한.
- CREATE: 테이블, 데이터베이스 등의 객체를 생성할 수 있는 권한.
- DROP: 테이블, 데이터베이스 등의 객체를 삭제할 수 있는 권한.
- INDEX: 인덱스를 생성하거나 삭제할 수 있는 권한.
- ALTER: 테이블 구조를 변경할 수 있는 권한.
- CREATE TEMPORARY TABLES: 임시 테이블을 생성할 수 있는 권한.
- LOCK TABLES: 테이블을 잠글 수 있는 권한.
- EXECUTE: 저장 프로시저나 함수 등을 실행할 수 있는 권한.
- CREATE VIEW: 뷰를 생성할 수 있는 권한.
- SHOW VIEW: 뷰의 내용을 조회할 수 있는 권한.
- CREATE ROUTINE: 저장 프로시저 및 함수 생성을 위한 권한.
- ALTER ROUTINE: 저장 프로시저 및 함수의 구조를 변경할 수 있는 권한.
- EVENT: 이벤트를 생성 및 수정할 수 있는 권한.
- TRIGGER: 트리거를 생성하거나 삭제할 수 있는 권한.
- REFERENCES: 외래 키 제약조건을 생성할 수 있는 권한.
- SUPER: 서버 관리 권한 (예: 세션을 종료하거나, 쿼리 실행을 차단하는 등의 권한).
- CREATE USER: 유저를 생성할 수 있는 권한.
- PROCESS: 실행 중인 쿼리 및 프로세스를 볼 수 있는 권한.
- FILE: 파일을 읽거나 쓸 수 있는 권한.
- SHOW DATABASES: 모든 데이터베이스를 조회할 수 있는 권한.
- RELOAD: 서버의 설정을 다시 로드할 수 있는 권한.
- SHUTDOWN: 서버를 종료할 수 있는 권한.
- REPLICATION SLAVE: 슬레이브 서버에서 레플리케이션을 받을 수 있는 권한.
- REPLICATION CLIENT: 레플리케이션 관련 정보를 조회할 수 있는 권한.
- CREATE TABLESPACE: 테이블스페이스를 생성할 수 있는 권한.
'잡다 > SQL' 카테고리의 다른 글
[SQL] Entity Relationship Model (0) | 2022.01.17 |
---|---|
[SQL] SELECT 문 (0) | 2022.01.15 |
[SQL] DB 및 테이블의 생성, 열람 및 삭제 (0) | 2022.01.09 |
sql 데이터 형 (0) | 2022.01.07 |