* 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';
'데이터베이스 > MySQL' 카테고리의 다른 글
[MySQL] 문자열 함수, 유니온, 서브쿼리, 복사 (0) | 2023.09.20 |
---|---|
[MySQL] Join, 데이터 정규화 (0) | 2023.09.20 |
[MySQL] 정렬, Limit, group함수 (0) | 2023.09.19 |
[MySQL] 데이터 수정, 삭제, 검색, where (0) | 2023.09.19 |
[MySQL] 데이터 타입, 테이블 다루기 (0) | 2023.09.18 |
댓글