본문 바로가기

프로그래밍/MySQL & MariaDB

MariaDB user 생성과 권한 설정/확인 그리고 에러 해결


MariaDB를 활용하여 데이터베이스 구축 시, 테이블을 구축하고 유저를 생성할 때 참고를 위함.

 

<글의 순서>

1. 유저 생성 하기

2. 권한 부여 하기

3. 유용한 명령

4. 유저 생성 시 발생할 수 있는 에러 해결

 

1. 유저 생성하기

create user '유저명'@'호스트명' identified by '비밀번호';
💡 호스트명 와일드카드 입력 예
    % : 모든 호스트
    111.11.%.% : 111.11 이하의 모든 호스트

 

2. 권한 부여 하기

GRANT USAGE ON ~

  • 지정한 유저에게 (아직은) 실제로 권한을 부여 하지는 않음
  • 지정한 유저가 옵션을 변경 할 수 있도록 하는 명령

 

GRANT USAGE ON *.* TO '유저명'@'호스트명' IDENTIFIED BY '비밀번호';

💡 *.*의 의미
    모든 데이터베이스의 모든 테이블
    → (데이터베이스명) . (테이블명)

 

GRANT (대상 권한) PRIVILEGES ON ~

  • 권한 부여 명령
-- '유저명'@'호스트명'에게 '데이터베이스'의 모든 테이블에 ALL 권한을 부여한다
GRANT ALL PRIVILEGES ON `데이터베이스`.* TO '유저명'@'호스트명';
💡 부여할 수 있는 권한(privileges) 참고

https://www.techonthenet.com/mariadb/grant_revoke.php

 

3. 유용한 명령

  • 현재 유저의 권한 확인
SHOW GRANTS;

 

  • 지정 유저의 권한 확인
SHOW GRANTS FOR (유저명@호스트명);

 

  • 권한 변경사항을 반영
FLUSH PRIVILEGES;

 

 

4. 유저 생성 시 발생할 수 있는 에러 해결

ERROR 1396 Operation CREATE USER failed for '(USERNAME)'@'(HOST)'

💡 유저를 DROP을 실행하고 다시 생성 시, 해결이 가능함

 

어떤 때 발생하는 에러인가?

  • user 테이블에 해당 유저가 없음에도 유저 생성이 불가하고 에러가 발생
  • FLUSH PRIVILEGES 쿼리 실행으로도 반영이 안 되고 생성도 불가
  • 아마도? 메모리상에 존재하거나 유저가 생성되었으나 어딘가에서 반영이 안 되어 발생하는 듯 보임