코딩/MySQL

MySQL 유저 생성하기 ( CREATE, GRANT, ALTER문, Privilege배우기)

peter_00 2023. 11. 17. 22:12
반응형

안녕하세요 MySQL에 대해 알아보는 시간, 오늘은 MySQL 유저를 생성하는 방법에 대해 알아볼까 합니다.

저의 MySQL 강의 (?) 강좌 (?)는 전부 제 교수님이 설명해 주시는 수업을 제 방식대로 풀어서 설명하는 것이니 오류가 있어도 너그럽게 봐주시길 바랍니다! 또한 모든 저의 전공수업은 영어로 진행이 되어서 번역에 오류가 있을 수 있습니다!



MySQL에서 유저를 생성하는 거는 별로 어렵지 않습니다.

기본적으로 CREATE를 써주시면 되는데요.

CREATE USER 유저네임 IDENTIFIED BY '패스워드';

유저네임은 쉽게 아이디라고 생각하시면 되고 패스워드는 비밀번호라고 생각하시면 됩니다.

자, 이제 유저를 생성해 주셨으면 각각의 유저들에게 권한을 부여할 수 있게 됩니다.

 

GRANT를 이용해서 어떠한 권한을 어떠한 유저에게 부여할지에 대해 결정할 수 있습니다.

 

GRANT: This is the command used to assign specific privileges to a user or role in a database.

GRANT ALTER, DROP, SELECT, INSERT, UPDATE, DELETE ON 테이블이름.* TO 유저네임 WITH GRANT OPTION;

 

GRANT를 이용하실 때에는 어떠한 타입의 권한을 부여할지에 대해 생각해 주시면 되고 ON 을 사용해서 어떠한 테이블 그리고 TO를 사용해서 어떤 유저에게 특정 권한을 부여할지 결정해 주시면 됩니다.

 

ALTER를 이용해서 데이터베이스와 테이블을 수정할 수 있습니다.

 

ALTER USER: This command is used to modify the properties of an existing user account in the database.

ALTER USER 유저네임 WITH MAX_QUERIES_PER_HOUR 숫자 MAX_UPDATES_PER_HOUR 숫자;

 

위 예시는 유저의 멕시멈 쿼리를 제한하는 코드인데요

또 다른 예시를 들자면 

 

ALTER USER 유저네임 PASSWORD EXPIRE;

이렇게 특정 유저의 데이터 베이스를 수정할 수 있습니다.

 

GRANTALTER를 이용해서 권한을 부여하거나 데이터베이스를 수정해 보았습니다 !

하지만
어떠한 권한을 부여했고 어떤 데이터를 수정했는지 확인하는 방법은 정말 귀찮은데요
한눈에 볼 수 있는 방법이 있습니다!

SELECT * FROM mysql.db WHERE User IN ('유저네임');

 

[ .db 를 이용해서 데이터베이스 권한에 대한 정보들을 알려줍니다. ]

SELECT * FROM mysql.tables_priv WHERE User IN ('유저네임');

[ .tables_priv를 이용해서 어떠한 유저가 특정 테이블에 대한 권한이 무엇이 있는지에 대한 정보들을 알려줍니다. ]

 

하지만 위 코드를 실행하면 불필요한 정보들이 정말 많습니다.
그래서 특정 정보만 보고 싶다면 이러한 방법을 사용하면 됩니다!

SELECT User, Host, 	Select_priv, Insert_priv, Update_priv, Delete_priv, 
					Create_priv, Drop_priv, Grant_priv, Create_view_priv,
                    Max_questions, Max_updates,Password_expired 
                    FROM mysql.user WHERE User IN ('유저네임');

[ 따로 보고 싶은 권한들만 선택 후 이 유저가 그러한 권한이 있는지 없는지에 대해 Y N으로 결과가 나옵니다. ]

 

이렇게 오늘은 GRANTALTER 문을 이용하는 방법에 대해서 알아보았습니다 !

본격적으로 유저의 데이터베이스를 편집할 수 있게 되었네요 :)

잘못된 정보나 오류에 대한 의견은 언제나 환영입니다!

반응형