MYSQL 사용자 관리 :: 마이구미
이번 글의 주제는 MYSQL 사용자 관리에 대해서 다뤄본다.
데이터베이스에서도 사용자를 구분하여 적절한 권한을 줘서 관리할 수 있다.
예를 들어, 데이터베이스에 많은 데이터베이스가 있고, 각 데이터베이스에는 여러 테이블이 존재한다.
이 모든 것을 root에서 관리할 수는 없는 일이다.
root에서 관리한다면, 자신이 아닌 다른 사람과 공유해야할 경우 root 정보를 줘야한다.
모든 권한을 가진 root를 준다는 건 위험이 너무 크다.
그래서 목적에 따라 사용자를 만들어서 관리하면 수월하게 데이터베이스를 관리할 수 있다.
위와 같이 root를 통해 접속한다면 모든 데이터베이스들이 볼 수 있다.
본인은 데이터베이스들이 있을 경우 특정 사용자는 특정 데이터베이스에 대한 권한만 주겠다.
mysql> grant all privileges on bootstrap1.* to bootstrap@'%' identified by '1234';
mysql> grant all privileges on DB.DBTABLE to userID@host identified by password;
위 명령어를 실행하면 사용자 ID가 bootstrap이고, 비밀번호가 1234이다.
이 계정은 slider라는 DB에 대해 모든 원격 IP에서 접속가능하고 모든 권한을 가진다는 뜻이다.
아래 명령어를 통해 사용자가 추가된 걸 확인할 수 있다.
mysql> use mysql;
mysql> select * from user;
권한을 확인하는 법은 아래와 같다.
본인은 쿼리에 모든 권한을 줬지만, 이것 또한 정할 수 있다.
select, insert,update에 대해서만 권한을 줘보겠다.
먼저 준 권한을 삭제 후 진행하겠다.
mysql> revoke all on bootstrap1.* from bootstrap@'%'; // 권한 삭제
mysql> grant select, insert, update on slider.* to bootstrap@'%' identified by '1234';
mysql> flush privileges; // 변경된 권한 적용
다시 권한을 확인해보면 아래와 같이 볼 수 있다.
boostrap1이라는 계정에 현재는 bootstrap이라는 DB만 관리하기 위한 계정이다.
하지만 다른 slider라는 DB 관리도 하고 싶다면 위와 동일하게 권한 명령어를 입력해주면 된다.
mysql> grant all privileges on slider.* to bootstrap@'%' identified by '1234';
mysql> flush privileges; // 변경된 권한 적용
권한 명령어를 통해 확인해보면 아래와 같이 추가한 DB의 권한을 볼 수 있다.
이런 식으로 사용자 관리를 할 수 있다.
사용자 관리는 다양한 목적이 있으므로, 목적에 따라 관리하면 많은 도움이 된다.
권한이란 건 정말 중요한 요소이다.
자칫 잘못하면 DB가 날라갈 수도 있다.
꼭 사용자를 통해 권한을 관리하길 바란다.