[MYSQL]
my sql 계정 관리
MySQL에서 계정과 각 계정에 대한 권한을 생성, 삭제, 확인하는 방법에 대해 설명하려 합니다.
이 글에서 사용하는 방법은 터미널이나 명령 프롬프트 환경에서 명령어로 직접 접속하여 하는 방법이니 참고하시면 좋을것 같습니다.
가장 처음 MySQl에 접속하는 방법부터 시작하도록 하겠습니다.
각 OS와 MySQL 버전 별로 조금씩 차이가 있을 수 있으니 참고하시기 바랍니다.
먼저 MySQL에 접속하는 방법입니다.
mysql -u root -p
root 계정으로 접속하는 방법입니다.
다른 계정을 사용하고 계시다면 root 부분에 자신이 사용하고 있는 계정을 넣어주시면 됩니다.
-p 옵션은 Password를 입력하기 위한 옵션입니다.
접속에 성공하였다면 그 다음으로 어떤 계정의 사용자들이 있는지 확인해 보도록 하겠습니다.
mysql> use mysql;
mysql이라는 database를 사용하겠다는 명령어 입니다.
mysql database에 있는 user 라는 table을 사용하기 위해 먼저 어떤 database를 사용할 것인지를 정해주는 것입니다.
mysql> select Host, User, Password from user;
여기서 Host는 localhost, '%'가 있고 특정 IP에서만 접근이 허용되는 권한을 줄 수 있습니다.
MySQL 5.7이상 버전에서는 authentication_string으로 존재합니다.
mysql> create user USERID@HOST identified by 'PASSWORD';
또는
mysql> insert into user (Host, User, Password) values ('Host', 'USERID', 'password('PASSWORD')');
계정을 생성하는 명령어 입니다.
USERID, PASSWORD에 생성할 계정의 id와 password를 넣어주고 HOST부분에 접근 권한을 작성해줍니다.
mysql> drop user 'USERID';
또는
mysql> delete from user where User = 'USERID';
계정을 삭제하는 명령어 입니다.
USERID에 삭제하려는 계정 id를 작성해 줍니다.
계정 삭제시 예상치 못한 문제가 발생할 수 있으므로 반드시 확인 후 작업하는 것을 추천합니다.
mysql> grant all privileges on DATABASE.TABLE to USERID@HOST identified by 'PASSWORD';
계정에 권한을 부여하는 명령어 입니다.
all privileges는 모든 권한을 부여하는 것이고 select, insert 등 특정 권한만을 부여하고 싶다면 all privileges부분에 원하는 권한만을 작성해 주고 DATABASE와 TABLE에 권한을 부여할 database와 table 이름을 작성해 줍니다.
database.*은 해당 database의 모든 table에 대한 권한을 말하고 *.*는 모든 접근 권한을 말합니다.
mysql> revoke all on DATABASE.TABLE from USERID@HOST;
계정에 부여된 권한을 삭제하는 명령어 입니다.
all은 부여된 모든 권한을 삭제하는 것이고 특정 권한을 삭제하고 싶다면 all 부분에 작성해 줍니다.
mysql> flush privileges;
변경된 권한을 적용하는 명령어 입니다.
권한을 추가 및 삭제 후 작성해 주어야 합니다.
grant와 revoke로 권한을 변경하였어도 이 명령어를 작성해 주지 않으면 적용되지 않으니 반드시 작성해댜 합니다.
mysql> show grants for USERID@HOST;
권한을 확인하는 방법입니다.
USERID와 HOST가 일치하는 계정의 부여되어 있는 권한을 보여줍니다.
이 글에서는 계정을 생성하고 권한을 부여하는 순서로 작성하였지만 계정을 생성하지 않고 grant 명령어 만으로 계정을 생성하는 동시에 권한을 부여할 수 있습니다.
어렵고 복잡한 내용은 아니지만 알고 있으면 데이터 베이스 관리에 많은 도움이 될거라 생각합니다.^^
출처: https://bblog.tistory.com/316 [편두리 기업블로그]