데이터베이스/MySQL

[MySQL] db 사용자관리

caramel-bottle 2023. 9. 20.

* mac OS를 기준으로 작성됨.

 

사용자 추가하기

terminal에서 root로 로그인

moonsmac@yangmungiui-MacBookAir ~ % cd /usr/local/mysql/bin
moonsmac@yangmungiui-MacBookAir bin % ./mysql -u root -p

설정한 비밀번호를 입력후 로그인.

 

로그인에 성공했다면 다음과 같이 mysql에 접속해있음을 알 수 있다.

mysql>

 

접속 가능한 사용자 추가하기

mysql> create user '사용자명'@'localhost' identified by '비밀번호';

'사용자명', '비밀번호' 항목엔 사용하고자하는 임의의 이름과 비밀번호를 입력한다.

mysql> create user 'moon'@'localhost' identified by '1111';
Query OK, 0 rows affected (0.00 sec)

 

사용자 목록 조회

mysql> use mysql;
Database changed

Database를 mysql로 변경해준다.

mysql> select user, host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| apple            | localhost |
| moon             | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

위와 같이 입력하면 현재 추가되어있는 사용자 리스트를 볼 수 있다.

 

 

할당 권한 상세 옵션

  • create, drop, alter: 테이블에 대한 생성, 삭제, 변경 권한
  • select, insert, update, delete: 테이블의 데이터를 조회, 삽입, 변경, 삭제에 대한 권한
  • all: 모든 권한
  • usage: 권한을 부여하지 않고 계정만 생성, 다시 권한을 없애기 위해 쓰기도 함
grant select on 데이터베이스명.테이블명 to '사용자'@'localhost';

grant all on *.* to '사용자'@'localhost';

flush privileges; -- 바로 반영이 되지 않을 때 사용
				
grant select on 데이터베이스명.테이블명 to '사용자'@'%'; -- 모든 IP에서 접근이 가능 

grant select on 데이터베이스명.테이블명 to '사용자'@'특정 IP주소';

 

사용자 삭제하기

drop user 계정명;

사용자 권한 제거하기

revoke 권한명 privileges on 데이터베이스명.테이블명 from '계정명'@'localhost';

사용자 권한 조회하기

show grants for '계정명'@'localhost';

 

* moon 계정에 권한을 부여하고 해제하는 예시

[root] 데이터베이스 생성

create database moon_db;

 

[root] 테이블 생성

create table moon_db.member(select * from kdt.member);

 

[root] 생성이 되었는지 확인

use moon_db;
select * from member;

 

[terminal] 사용자 목록 확인

mysql> use mysql;

mysql> select user, host from user;

목록에 자신이 새로 추가한 사용자가 없다면 추가하기

 

[terminal] 사용자 추가

mysql> create user 'moon'@'localhost' identified by '1111';

 

MySQL WorkBench에서 사용자 생성하기.

 

Username에 추가한 사용자 이름을 작성한다.

 

사용자 생성할 때 작성한 비밀번호를 입력한다.

 

생성된 사용자를 확인할 수 있다.

 

 

[root] 권한 부여하기

grant select on moon_db.member to 'moon'@'localhost';

root계정에서 생성한 moon_db 데이터베이스의 table을 select할 권한을 부여한다.

 

 

[root] 권한이 잘 부여되도록 새로고침하는 느낌

flush privileges;

 

이제 권한이 잘 부여되었는지 확인한다.

 

 

[moon] 에러가 나지 않는다면 기본 권한인 'usage'가 적용되어 있다는 의미이다.

use moon_db;

 

[moon] select 권한을 주었기 때문에 select가 되는지 확인

select * from member;

 

[moon] insert 사용

insert into member (userid, name, gender, point) values('cake', '케이크', '여', 250);

select 권한만 주었기 때문에 insert를 하면 에러가 발생한다.

 

 

[root] moon의 모든 권한 삭제

revoke all on moon_db.member from 'moon'@'localhost';

moon 사용자에게 주어졌던 moon_db 데이터베이스의 member 테이블에 관한 모든 권한을 삭제한다.

 

 

[moon] 권한 확인

use moon_db;

usage 권한을 포함한 모든 권한을 삭제하였기 때문에 에러가 발생한다.

이외에도 모든 접근, 수정, 삭제가 불가능하다.

 

 

[root] 권한 확인

show grants for 'moon'@'localhost'; -- 권한 확인

권한을 삭제하였는데 무언가가 남아있는 것을 볼 수 있다.

GRANT USAGE ON *.* TO 'moon'@'localhost'

 

위 표시된 부분의 의미는....

 

 

[root] 사용자 삭제

drop user 'moon'@'localhost';

 

 

댓글