Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

미래학자

[MySQL] 10장 사용자 권한 주기 (GRANT) 본문

DataBase

[MySQL] 10장 사용자 권한 주기 (GRANT)

미래학자 2016. 11. 23. 13:15
  1. 권한 기본 설정 (GRANT)
  2. 특정 데이터 베이스에 대한 권한 주기
  3. 여러가지 권한
  4. 권한 취소


1. 권한 기본 설정 (GRANT)



루트(root) 사용자 암호 설정


# 5.7 이전 버전
mysqladmin -u root password 새비밀번호
mysql -u root mysql
----
mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root=password('새비밀번호');
# 5.7 이 후
SET PASSWORD FOR 'root'@'localhost' = password_option; # root 계정에서
SET PASSWORD = password_option; # 현재 사용자
view raw mysql_51.sql hosted with ❤ by GitHub




5.7 버전을 기준으로 명령어가 바뀌었다.



사용자 추가 및 테이블에 대한 권한 설정


CREATE USER test_user IDENTIFIED BY 'test';
GRANT SELECT ON study_db.color TO test_user;
view raw mysql_52.sql hosted with ❤ by GitHub


1 : test_user라는 사용자를 추가하며 비밀번호는 'test'이다.

3 : test_user는 study_db 데이터 베이스의 color 테이블에 대해 SELECT 할 수 있는 권한을 가진다.




2. 특정 데이터 베이스에 대한 권한 주기


GRANT SELECT, INSERT ON study_db.* TO a_user;
GRANT ALL ON study_db.* TO a_user;
GRANT SELECT ON *.* TO a_user;
view raw mysql_53.sql hosted with ❤ by GitHub


1 : a_user 사용자는 study_db 데이터베이스의 모든 table에 대해서 SELECT, INSERT 권한을 가진다.
2 : 데이터 베이스의 모든 테이블에 대해 모든 권한을 준다.
3 : a_user는 모든 데이터 베이스의 모든 테이블에 대해 SELECT 권한을 가진다.




3. 여러가지 권한



# 역할 만들어 권한 부여하기
CREATE ROLE insert_manager;
GRANT INSERT, SELECT ON some_db.* TO insert_manager;
GRANT insert_manager TO b_user;
# 권한을 수여할 권한 부여하기
GRANT ALL ON study_db.* TO test_user WITH GRANT OPTION;
# WITH GRANT OPTION을 주면 test_user 가 가진 권한을 남에게 줄 수 있음(현재는 root에서 test_user에게 권한을 주었음)
# 역할을 수여알 권한 부여하기
# WITH GRANT OPTION과 비슷하게 역할 또한 수여 가능하다.
GRANT inser_manager TO c_user WITH ADMIN OPTION;
# 사용자 생성과 동시에 권한 부여하기
GRANT SELECT ON ab_db TO e_user IDENTIFIED BY 'abcd33232';
view raw mysql_54.sql hosted with ❤ by GitHub



4. 권한 취소


REVOKE SELECT ON ab_db.* FROM c_user;
# c_user로 부터 ab_db 데이터 베이스의 모든 테이블에 대해 SELECT 할 권한을 제거한다.
REVOKE GRANT OPTION ON SELECT ON ab_db.* FROM c_user
# c_user로 부터 권한을 수여할 권한만 없앤다.
REVOKE SELECT ON ab_db.* FROM a_user CASCADE;
REVOKE SELECT ON ab_db.* FROM a_user RESTRICT;
# 위 : a_user가 다른 사람에게 수여한 모든 권한을 없앤다.
# 아래 : a_user의 권만한 없앤다.
view raw mysql_55.sql hosted with ❤ by GitHub



* 위 CASCADE 또는 RESTRICT 둘 다 없을 경우 DEFAULT가 CASCADE