🧚 잠깐! Beekeeper Studio는 빠르고 현대적인 오픈 소스 MySQL GUI예요 다운로드
2024년 9월 8일 작성자: Matthew Rathbone

MySQL 권한은 사용자가 데이터베이스에서 어떤 작업을 할 수 있는지 결정해요. SHOW GRANTS를 사용하면 이 권한을 검토해서 사용자가 올바른 접근 권한을 가지고 있는지 확인할 수 있어요. 다음과 같은 작업을 할 수 있어요:

  • 특정 사용자의 모든 권한 조회
  • 보안 목적의 사용자 감사
  • 현재 권한을 바탕으로 권한 수정

계속 읽기 전에 저희의 빠르고 현대적인 MySQL 데이터베이스 관리 도구인 Beekeeper Studio를 소개할게요. SQL 에디터는 입력하는 대로 자동 완성을 제공하고 실행한 모든 쿼리의 기록을 남겨줘서 권한을 점검할 때 편리해요. MySQL에서는 무료로 사용할 수 있으니 여기서 다운로드하세요.

SHOW GRANTS의 기본 문법

SHOW GRANTS FOR 'username'@'host';
  • ‘username’은 MySQL 사용자를 의미해요.
  • ‘host’는 사용자가 접속하는 호스트 이름 또는 IP 주소를 의미해요.

특정 사용자의 권한 조회하기

localhost에서 접속하는 ‘john’이라는 사용자가 있다고 해 볼게요. 이 사용자의 권한을 확인하려면 다음 쿼리를 사용하세요:

SHOW GRANTS FOR 'john'@'localhost';

예상 출력:

+---------------------------------------------------------+
| Grants for john@localhost                               |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO `john`@`localhost`                |
| GRANT SELECT, INSERT ON `mydb`.* TO `john`@`localhost`  |
+---------------------------------------------------------+

이 출력에서:

  • GRANT USAGE는 사용자에게 전역 권한이 없다는 뜻이에요.
  • GRANT SELECT, INSERT ON mydb.*는 john이 ‘mydb’ 데이터베이스의 모든 테이블에 대해 SELECT 및 INSERT 권한을 가지고 있다는 뜻이에요.

모든 사용자의 권한 조회하기 (MySQL 5.7 이상)

MySQL에는 모든 사용자의 권한을 한 번에 직접 보여주는 명령이 없어요. 하지만 mysql.user 테이블에서 필요한 쿼리를 생성한 다음, 각 사용자에 대해 SHOW GRANTS를 사용할 수 있어요:

SELECT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';') 
FROM mysql.user;

이 쿼리는 시스템의 각 사용자에 대한 SHOW GRANTS 문 목록을 생성해요. 출력 예시는 다음과 같아요:

+--------------------------------------------------+
| CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host |
+--------------------------------------------------+
| SHOW GRANTS FOR 'root'@'localhost';              |
| SHOW GRANTS FOR 'john'@'localhost';              |
| SHOW GRANTS FOR 'admin'@'192.168.1.10';          |
+--------------------------------------------------+

그런 다음 SHOW GRANTS 쿼리를 실행해서 특정 사용자의 권한을 확인할 수 있어요.

현재 사용자의 권한 조회하기

현재 데이터베이스에 접속한 사용자의 권한을 확인하려면 CURRENT_USER() 함수를 사용하면 돼요:

SHOW GRANTS FOR CURRENT_USER();

예상 출력:

+---------------------------------------------------------+
| Grants for current user                                 |
+---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost`       |
+---------------------------------------------------------+

이 명령은 자신의 권한이 무엇인지 확실하지 않은 사용자에게 특히 유용해요.

출력 해석하기

  • GRANT USAGE: 사용자에게 전역 권한은 없지만 특정 데이터베이스에 대한 권한은 있을 수 있다는 뜻이에요.
  • ALL PRIVILEGES: GRANT OPTION을 제외하고 데이터베이스 또는 전역 범위의 모든 권한을 부여해요.
  • GRANT OPTION: 사용자가 다른 사용자에게 권한을 부여할 수 있게 해요.
    데이터베이스별 권한: SELECT, INSERT, UPDATE, DELETE 같은 권한은 특정 데이터베이스나 테이블에 대해 부여될 수 있어요.

MySQL GRANTS 이해하기

MySQL은 관리자가 사용자에게 권한을 부여할 수 있는 GRANT 문을 제공해요.

반대로 권한을 회수하는 REVOKE 문도 있어요.

하지만 권한을 변경하기 전에 현재 어떤 권한이 설정되어 있는지 알아야 해요. 바로 이때 SHOW GRANTS 명령이 필요해요.

SHOW GRANTS 명령은 사용자의 권한을 똑같이 복제하기 위해 실행해야 하는 GRANT 문을 보여줘요.

이 명령은 MySQL과 MariaDB 데이터베이스 엔진에서 모두 사용할 수 있어요.

결론

정리하자면, MySQL의 SHOW GRANTS 명령은 사용자 권한을 표시하는 데 사용해요. 데이터베이스 관리자가 사용자 권한을 감사하고 관리하는 데 중요한 도구예요.

함께 읽어보면 좋은 글:

Beekeeper Studio는 무료 & 오픈 소스 MySQL GUI예요

요즘 MySQL 작업에 Beekeeper Studio를 쓰고 있는데, 금세 제가 가장 좋아하는 데이터베이스 도구 중 하나가 됐어요. 인터페이스가 깔끔하고 현대적이며 산만하지 않아서, 다른 도구들처럼 복잡한 화면 없이 쿼리에만 집중할 수 있어요. - Surendra Singh

Beekeeper Studio는 빠르고 직관적이며 사용하기 쉬운 MySQL 클라이언트예요. 다른 데이터베이스도 많이 지원하고 Windows, Mac, Linux에서 모두 잘 작동해요.

Beekeeper의 Linux 버전은 100% 모든 기능을 갖추고 있어요. 대충 만든 부분도, 빠진 기능도 없어요.

MySQL 사용자들의 Beekeeper Studio 후기

Beekeeper Beekeeper Still a Newbie

수년간 phpMyAdmin을 쓰다가 이 프로그램을 선택했는데, 한 차원 높은 품질의 세계로 들어선 느낌이에요. 여기서는 사용자를 진심으로 배려한다는 게 느껴졌어요. 콘셉트, 구현, 실제 사용 경험까지 모든 것에 대해 Matthew에게 진심으로 감사해요.

Alex M

멋진 도구예요. 지금까지 찾은 Postgres와 MySql DB 관리용 IDE 중 가장 실용적이에요. 번거로움 없이 그냥 잘 작동해요 :-)

MySQL 작업 방식을 개선할 준비가 되셨나요?

download 무료 다운로드