본문 바로가기
MySQL(MariaDB)

MySQL 사용자 생성 및 권한 설정

by 코딩박사 2025. 7. 8.
반응형

MySQL에서 사용자를 생성하고, 비밀번호 설정하고, 권한 부여 및 확인, 변경, 삭제까지 하는 과정을 단계별로 예제와 함께 설명해드리겠습니다.

1. 사용자 생성

-- 형식
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

-- 예시: 로컬호스트에서만 접속 가능한 user1 생성
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'mypassword';

-- 예시: 모든 IP에서 접속 가능한 user2 생성
CREATE USER 'user2'@'%' IDENTIFIED BY 'securepass';

    - host는 접속을 허용할 호스트 지정.
      > 'localhost': 서버 로컬에서만 접속
      > '%': 모든 외부 IP에서 접속 가능
      > 특정 IP: '192.168.0.10' 등

2. 권한부여 (사용자에게 특정 데이터베이스나 테이블에 대한 권한을 부여)

-- 형식
GRANT 권한종류 ON 데이터베이스.테이블 TO 'username'@'host';

-- 예시: user1에게 testdb의 모든 테이블에 대해 SELECT, INSERT 권한 부여
GRANT SELECT, INSERT ON testdb.* TO 'user1'@'localhost';

-- 예시: user2에게 모든 DB의 모든 테이블에 대해 모든 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'user2'@'%' WITH GRANT OPTION;

     - WITH GRANT OPTION을 붙이면, user2도 다른 사용자에게 권한을 부여할 수 있음

3. 권한 적용 ( MySQL은 권한을 메모리에 캐시하기 때문에, 변경한 후 바로 반영)

FLUSH PRIVILEGES;

    - 대부분 최신 MySQL은 GRANT / REVOKE 시 자동 반영되지만, 명시적으로 사용해도 무방

4. 권한 확인

-- 현재 로그인한 사용자의 권한 확인
SHOW GRANTS;

-- 특정 사용자 권한 확인
SHOW GRANTS FOR 'user1'@'localhost';

 

5. 비밀번호 변경

-- user1의 비밀번호 변경
ALTER USER 'user1'@'localhost' IDENTIFIED BY 'newpassword';

 

6. 권한 회수

-- user1에게 부여한 SELECT 권한 회수
REVOKE SELECT ON testdb.* FROM 'user1'@'localhost';

 

7. 사용자 삭제

DROP USER 'user1'@'localhost';

 

8. 자주 쓰는 권한 종류

권한 설명
ALL PRIVILEGES 모든 권한
SELECT 조회
INSERT 삽입
UPDATE 수정
DELETE 삭제
CREATE 테이블/DB 생성
DROP 테이블/DB 삭제
ALTER 테이블 구조 변경
INDEX 인덱스 추가/삭제
GRANT OPTION 다른 사용자에게 권한 부여 가능
반응형