SQL/MySQL

MySQL 유저(User) 관리 기본 총정리

진리뷰 2024. 3. 15. 09:00
반응형

 

 

MySQL-유저(User)-관리-기본-총정리-썸네일
MySQL 유저(User) 관리 기본 총정리

 

 

 

이 글은 MySQL의 유저(User) 조회/생성/삭제, 권한 확인/부여/삭제를 총정리해서 담고 있습니다.

 

 

 

MySQL 유저(User)

 

MySQL의 유저는 두 가지로 나뉜다.

  • 현 PC에서만 접속 가능한 유저(local host)
  • 외부에서 접속 가능한 유저(%). 즉, 모든 IP에서 접근 가능한 유저

 

 

 

MySQL 유저(User) 조회, 생성, 삭제

 

 

MySQL 유저(User) 조회

 

MySQL 터미널에서 유저 조회를 해보자.

이때 유저 정보는 MySQL에서 관리하므로, USE mysql로 이동한다.

 

USE mysql;

SELECT host
     , user
FROM user;

 

 

아래는 mysql에서 관리하는 유저 정보이다.

 

Mysql-user
mysql host, user

 

 

 

MySQL 유저(USER) 생성

 

  • 현 PC에서만 접속 가능 유저 생성(local host)
    • CREATE USER: 유저 생성 명령
    • identified by: 접속 비밀번호 설정
CREATE USER '생성하려는 유저명'@'localhost' identified by '설정할 비밀번호';

 

  • 외부에서 접속 가능 유저 생성(%)
    • local host와 달리, 외부 접속 가능 유저는 '%'를 입력한다.
CREATE USER '생성하려는 유저명'@'%' identified by '설정할 비밀번호';

 

이때 아래처럼, 유저 종류(host)가 다르다면 유저명(user)은 같을 수 있다.

 

host user
localhost helloworld
% helloworld

 

 

 

MySQL 유저(User) 삭제

 

  • DROP USER: 생성했던 유저 삭제
  • 유저 종류는 다르지만, 유저명이 같을 경우 유저 종류 구분해서 삭제해야 함
DROP USER '유저명'@'localhost'		# 현 PC에서만 접속 가능 유저 삭제
DROP USER '유저명'@'%'			# 외부에서 접속 가능 유저 삭제

 

 

 

MySQL 유저(User) 권한 확인, 부여, 삭제

 

 

MySQL 유저(User) 권한 확인

 

  • SHOW GRANTS FOR: 유저별 권한 확인
# @뒤에 'localhost' | '%' 선택 입력
SHOW GRANTS FOR '유저명'@'localhost';

# 현재 접속한 유저의 권한 확인
SHOW GRANTS FOR current_user;

 

 

좌측은 막 생성한 localhost인 helloworld의 권한 목록이며, 기본 화면이다.

우측은 현재 접속한 유저의 권한 목록이다, 이때 root로 접속했기에 root@localhost로 보인다.

 

mysql-SHOW-GRANTS-FOR-localhostMySQL-SHOW-GRANTS-FOR-current-user
(좌) SHOW GRANTS FOR localhost ver. (우) current user ver.

 

 

 

MySQL 유저(User) 권한 부여

 

  • GRANT ALL ON ~ TO: 특정 데이터베이스의 모든 권한을 유저에게 부여
  • GRANT 권한 ON ~ TO: 특정 데이터베이스의 특정 권한을 유저에게 부여
  • 데이터베이스명.* 에서 .*는 특정 DB의 모든 테이블에 대한 권한을 유저에게 부여한다는 의미
  • *.*는 모든 DB의 모든 테이블에 대한 권한을 유저에게 부여한다는 의미

 

# 특정 데이터베이스의 모든 테이블
GRANT ALL ON 데이터베이스명.* TO '유저명'@'localhost';

# 모든 데이터베이스의 모든 테이블
GRANT ALL ON *.* TO '유저명'@'localhost';

 

 

아래는 유저helloworld에게 데이터베이스testdb의 모든 테이블에 대한 권한을 부여한 후의 권한 확인 목록이다.

 

MySQL-GRANT-ALL-ON-TO
GRANT ALL ON ~ TO

 

 

 

MySQL 유저(User) 권한 삭제

 

  • REVOKE ALL ON ~ FROM: 유저에게 부여된 특정 데이터베이스의 모든 권한 삭제
  • REVOKE 권한 ON ~ FROM: 유저에게 부여된 특정 데이터베이스의 특정 권한 삭제
# 특정 데이터베이스의 모든 권한 삭제
REVOKE ALL ON 데이터베이스명.* FROM '유저명'@'localhost';

# 특정 데이터베이스의 특정 권한 삭제
REVOKE 권한 ON 데이터베이스명.* FROM '유저명'@'localhost';

 

 

아래는 유저helloworld에게 데이터베이스testdb의 모든 테이블에 대한 권한을 삭제한 후의 권한 확인 목록이다.

위와 달리, GRANT ALL PRIVILEGES ON ~ 목록이 사라졌다.

 

MySQL-REVOKE-ALL-ON-FROM
REVOKE ALL ON ~ FROM

 

 

 

MySQL 변경사항 안보일 때

 

  •  FLUSH PRIVILEGES: 새로고침, 변경사항 안 보일 때 사용
FLUSH PRIVILEGES;
반응형
top