본문 바로가기

잡다/SQL

SQL 명령어 ( 권한 / 프로세스 )

사용자와 권한

사용자 조회

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