[MySQL] 계정 및 권한
계정 목록 조회
계정 목록은 mysql 특수 테이블 user를 통해 조회하거나 수정할 수 있다.
select * from mysql.user
Select_priv는 select를 할 수 있는지 여부이고, Insert_priv 등도 동일하다.
계정 생성
계정은 create user 명령을 사용해 추가할 수 있다.
CREATE USER '유저네임'@'%' IDENTIFIED BY '패스워드';
'%' 는 계정의 IP다. %는 모든 IP를 Open해주는 와일드카드다.
내부에서만 접속이 가능하게 하려면 localhost를 써주면 된다.
특정 IP에서만 로그인이 가능하게 하려면 그 IP를 적어주면 된다.
계정 삭제
계정 삭제는 drop user 명령으로 처리할 수 있다.
drop user '계정명'@'%'

권한 부여
만약 방금 갓 만든 계정이라면 아무것도 할 수 없을 것이다.
권한이 없기 때문이다.
권한은 다음과 같은 형태로 부여가 가능하다.
GRANT 권한종류, ... ON 데이터베이스.테이블 TO '유저네임'@'%' WITH GRANT OPTION;
만약 모든 권한을 주고싶다면 권한은 ALL PRIVILEGES를. 데이터베이스와 테이블은 와일드카드로 주면 된다.
GRANT ALL PRIVILEGES ON *.* TO '유저네임'@'%' WITH GRANT OPTION;
test라는 데이터베이스에 DELETE를 제외한 대부분의 권한을 주고 싶다면 이런 식으로 하면 된다.
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON test.* TO '유저네임'@'%' WITH GRANT OPTION;권한 취소
부여했던 권한을 제거하려면 REVOKE를 사용하면 된다.
신택스는 GRANT와 거의 흡사하다. TO만 FROM으로 바뀔 뿐이다.
REVOKE 권한종류, ... ON 데이터베이스.테이블 FROM '유저네임'@'%'
만약 SELECT와 INSERT 권한만 빼앗고 싶다면 다음과 같이 사용하면 된다.
REVOKE SELECT, INSERT ON *.* FROM '유저네임'@'%'
원래 있던 것에

REVOKE를 날리면

이렇게 도로 바뀐다.
