수학과의 좌충우돌 프로그래밍

[MySQL] 사용자 목록, 추가, 제거 및 권한 부여, 제거 본문

데이터베이스/MySQL

[MySQL] 사용자 목록, 추가, 제거 및 권한 부여, 제거

ssung.k 2020. 3. 4. 01:27

db를 사용하면 사용자를 생성하고 각 사용자에 맞게 권한을 부여하는 것이 중요합니다.

권한은 단순히 스키마, 테이블에 대한 권한 부터 여러 기능에 대한 권한까지 다양하게 부여할 수 있습니다.

해당 포스팅은 mysql을 설치한 후 진행해야 되므로 아직 설치가 안되어있다면 설치 후 진행하시길 바랍니다.

MacOS에서 MySQL 설치

 

[MySQL] MacOS 에서 MySQL 설치

제목 그대로 MacOS 에서 MySQL 을 설치하는 방법이니 다른 운영체제를 사용하시는 분들은 다른 글을 참고해주시면 감사하겠습니다. mysql 을 설치하는 두 가지 방법에 대해서 알아보도록 하겠습니다. 해당 포스팅..

ssungkang.tistory.com

저는 MacOS를 사용하고 있으므로 다음과 같이 설치를 진행하였습니다.

 

서버 로그인

우선 terminal을 실행한 후 Mysql 서버에 로그인을 해야합니다.

mysql -u root -p

 

위 명령어 입력 후 비밀번호를 입력하면 서버에 접속되고 terminal에 다음과 같이 표시됩니다.

mysql>

 

사용자 목록 조회

우선 사용자 목록을 조회해보도록 하겠습니다.

사용자 목록은 mysql 기본 스키마인 mysql 안에 user 테이블에서 확인할 수 있습니다.

 

우선 mysql 스키마를 선택하겠습니다.

use mysql;

 

그 후 select 문을 통해 확인할 수 있습니다.

select user, host from user;

 

그 결과 사용자의 목록을 조회할 수 있습니다.

host에 대해서는 추가하기에서 다시 알아보도록 하죠.

+--------------------------+-----------+
| user                     | host      |
+--------------------------+-----------+
| laundry_guest_minsung    | localhost |
| minsung                  | localhost |
| mysql.infoschema         | localhost |
| mysql.session            | localhost |
| mysql.sys                | localhost |
| personal_project_2_admin | localhost |
| prograph_pre_task_root   | localhost |
| root                     | localhost |
| test                     | localhost |
+--------------------------+-----------+

 

사용자 추가

이번에는 사용자를 추가해보도록 하겠습니다.

마찬가지로 서버에 접속한 상태입니다.

create user {username}@{ip} identified by '{password}';

username 과 password에 원하는 계정의 정보를 적어줄 수 있습니다.

ip는 특정 ip에서의 접속을 허용하는데 사용됩니다.

로컬에서 접근하기 위한 계정은 localhost를 기재하면 되고 외부에서 접근하는 것은 그에 맞는 ip 주소를 기재해주면 됩니다.

이 때 % 를 통해 모든 외부접근을 허용할 수 있습니다.

혹은 123.456.% 을 통해서 123.456.xxx.xxx 에 해당하는 모든 ip 주소를 허용할 수도 있습니다.

 

사용자 제거

사용자를 제거하는 방법은 두 가지입니다.

drop user {username};
delete from user where user={username};

두 번째 명령어는 해당 테이블의 컬럼을 직접 지우는 방법으로 mysql의 계정/권한에 대해서는 다음과 같이 직접 조작하는 방법보다는 첫 번째 방법을 추천드립니다.

 

권한 부여

권한을 부여하기 전에 권한을 확인해보도록 하겠습니다.

show grants for {username}@{ip};

+-----------------------------------------------+
| Grants for prography@localhost                |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO `prography`@`localhost` |
+-----------------------------------------------+

USAGE 권한 지정자는 권한 없음을 나타냅니다.

권한은 없지만 MySQL에 계정이 있음을 알려주는 방식으로 사용됩니다.

 

권한을 추가하는 명령어는 다음과 같습니다.

grant {권한} privileges on {스키마}.{테이블} to {username}@{ip};

 

몇 가지 예시를 알아보도록 하겠습니다.

  • 모든 스키마의 모든 테이블의 모든 권한을 사용자에게 부여

    grant all privileges on *.* to {username}@{ip};
    

    다음은 주로 root 계정에서 부여되는 권한입니다.

     

  • 특정 스키마의 모든 테이블의 select, insert 권한을 사용자에게 부여

    grant select, insert on {스키마}.* to {username}@{ip};
    

 

다음과 같이 권한을 부여한 후, 권한을 확인해보면 변화된 모습을 확인할 수 있습니다.

grant all privileges on prography.* to prography@localhost;
+------------------------------------------------------------------+
| Grants for prography@localhost                                   |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `prography`@`localhost`                    |
| GRANT ALL PRIVILEGES ON `prography`.* TO `prography`@`localhost` |
+------------------------------------------------------------------+

 

권한 제거

권한을 부여하는데 grant to 를 사용하였다면 권한을 제거하기 위해서는 revoke from 을 사용합니다.

revoke {권한} privileges on {스키마}.{테이블} from {username}@{ip};

 

위에서 부여한 권한을 제거한 후 다시 확인해보도록 하겠습니다.

revoke all on prography.* from prography@localhost;
+-----------------------------------------------+
| Grants for prography@localhost                |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO `prography`@`localhost` |
+-----------------------------------------------+

 

'데이터베이스 > MySQL' 카테고리의 다른 글

[MySQL] RDS에서 RDS로 데이터 migration  (6) 2020.09.22
[MySQL] MacOS 에서 MySQL 설치  (0) 2020.01.20
Comments