스타트업_디벨로퍼 2021. 2. 22. 02:21

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 [편두리 기업블로그]

반응형