일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Django
- 파이썬
- 백준
- HTML
- c++
- 알고리즘 풀이
- DRF
- MAC
- Baekjoon
- django rest framework
- django widget
- javascript
- Algorithm
- form
- js
- Git
- web
- 장고
- 알고리즘 문제
- react
- django ORM
- 알고리즘
- CSS
- API
- PYTHON
- 파이썬 알고리즘
- java
- es6
- 알고리즘 연습
- AWS
- Today
- Total
수학과의 좌충우돌 프로그래밍
[MySQL] 사용자 목록, 추가, 제거 및 권한 부여, 제거 본문
db를 사용하면 사용자를 생성하고 각 사용자에 맞게 권한을 부여하는 것이 중요합니다.
권한은 단순히 스키마, 테이블에 대한 권한 부터 여러 기능에 대한 권한까지 다양하게 부여할 수 있습니다.
해당 포스팅은 mysql을 설치한 후 진행해야 되므로 아직 설치가 안되어있다면 설치 후 진행하시길 바랍니다.
저는 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 |