카테고리 없음
MySQL 계정 설정
뽀글뽀글 개발자
2024. 7. 21. 21:26
서비스를 배포하면서 보안을 위해 root 계정을 사용하지 않고, 용도에 맞는 계정을 생성하기로 했다.
먼저 서비스는 JPA를 사용하는데, 운영 환경에서는 DDL을 사용하지 않고 직접 스키마를 생성할 것이기 때문에 CRUD 권한만 가진 계정을 생성했고, 개발 환경에서는 테이블을 생성하고 테스트 할 일이 많기 때문에 DDL 권한을 추가로 가지는 계정을 생성했다.
prod: SELECT, INSERT, UPDATE, DELETE
dev : SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP
MySQL 계정 관련 쿼리
계정 설정
계정 생성
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
모든 호스트 = % 사용
계정 조회
SELECT User, Host FROM mysql.user;
계정 삭제
DROP USER 'username'@'host';
권한 설정
권한 생성
GRANT {권한} ON {database} TO 'username'@'host';
### 예시 ###
# 모든 데이터베이스에 대한 모든 권한
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host';
# 특정 데이터베이스에 대한 일부 권한
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'username'@'host';
권한 조회
SHOW GRANTS FOR 'username'@'host';
권한 삭제
REVOKE {권한} PRIVILEGES ON {database} FROM 'username'@'host';
REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'host';
REVOKE SELECT, INSERT ON database_name.table_name FROM 'username'@'host';
변경 사항 적용
FLUSH PRIVILEGES;