웹사이트 검색

MySQL에서 새 사용자를 생성하고 권한을 부여하는 방법


MySQL은 데이터를 저장 및 구성하고 사용자가 데이터를 검색할 수 있도록 하는 인기 있고 널리 사용되는 데이터베이스 관리 시스템입니다. 사용자에게 테이블과 데이터베이스에 대한 특정 권한을 부여하는 다양한 옵션이 함께 제공됩니다.

이 가이드에서는 MySQL 데이터베이스에서 새 사용자를 생성하고 권한을 부여하는 방법을 알아봅니다.

MySQL에서 새 사용자를 만드는 방법

새 사용자를 생성하려면 먼저 MySQL 셸에 로그인하세요.

sudo mysql -u root -p

sudo 비밀번호와 MySQL 데이터베이스를 설정할 때 제공한 비밀번호를 입력하고 ENTER를 누르세요. 그러면 이 메시지가 표시됩니다.

새 사용자를 생성하려면 아래 표시된 구문을 사용하십시오.

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

예를 들어, 데이터베이스 내에 'tecmint'라는 새 사용자를 생성하려면 다음 명령을 호출합니다.

MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

명심해야 할 몇 가지 사항

사용자를 로컬로 추가하는 경우(예: MySQL이 설치된 시스템)에서 사용자의 호스트는 IP 주소가 아닌 localhost로 지정됩니다. 키워드 'localhost'는 '이 컴퓨터'로 번역되며 MySQL은 이를 고유하게 처리합니다. 기본적으로 localhost는 mysql 클라이언트가 로컬에 설치된 MySQL 데이터베이스 서버에 연결하는 데 사용됩니다.

지금까지 tecmint 사용자에게는 데이터베이스와 상호작용할 수 있는 권한이 없습니다. 실제로 사용자는 MySQL 셸에 액세스할 수도 없습니다.

사용자에게 테이블을 포함한 모든 데이터베이스에 대한 전체 액세스 권한을 부여하려면 다음을 실행합니다.

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';

위 명령에서 별표는 각각 사용자가 액세스할 수 있는 데이터베이스와 테이블을 가리킵니다. 이는 모든 수행을 포함하여 데이터베이스에 대한 읽기, 쓰기, 편집실행 권한을 사용자에게 부여합니다. 다른 데이터베이스와 테이블 전반의 작업도 마찬가지입니다.

지금까지 우리는 사용자에게 데이터베이스에 대한 전체 액세스 권한을 부여했습니다. 이는 MySQL 개념을 설명하는 데 유용하지만 데이터베이스에 보안 위험을 초래할 수 있으므로 일반적으로 권장되지 않습니다. 해커가 사용자의 비밀번호를 알아냈다면 어떤 일이 일어날지 생각해 보세요. 다음 섹션에서 더 자세히 진행하고 특정 권한을 할당하는 방법에 대해 논의하겠습니다.

사용자에게 권한 할당이 완료되면 변경 사항이 적용되도록 표시된 대로 모든 권한을 다시 로드합니다.

MariaDB [none]> FLUSH PRIVILEGES

다양한 사용자 권한을 부여하는 방법

사용자에게 부여할 수 있는 가능한 권한은 다음과 같습니다.

  • 모든 권한 – 앞서 본 것처럼 이는 MySQL 사용자에게 특정 데이터베이스에 대한 전체 액세스 권한을 부여합니다.
  • CREATE – 사용자가 새 데이터베이스나 테이블을 생성할 수 있습니다.
  • DROP – 사용자가 데이터베이스나 사용자를 삭제할 수 있습니다.
  • INSERT – 사용자가 테이블에 행을 삽입할 수 있습니다.
  • DELETE – 사용자가 테이블에서 행을 삭제할 수 있습니다.
  • SELECT – 'SELECT' 권한이 있으면 사용자는 테이블의 내용을 읽을 수 있습니다.
  • UPDATE – 사용자가 테이블의 행을 업데이트할 수 있습니다.
  • GRANT OPTION – 사용자는 다른 사용자의 권한을 부여하거나 제거할 수 있습니다.

특정 사용자 권한을 부여하려면 다음 구문을 사용하십시오.

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

또한 다음과 같이 단일 별표 기호를 사용하여 데이터베이스의 모든 테이블에 권한을 할당할 수 있습니다.

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

예를 들어 testdb 데이터베이스의 모든 테이블에서 'tecmint' 사용자에게 SELECT 권한을 할당하려면 다음 명령을 실행합니다.

MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';

그런 다음 변경 사항이 적용되도록 권한을 플러시합니다.

MariaDB [none]> FLUSH PRIVILEGES;

또한 표시된 것처럼 쉼표로 구분하여 여러 권한을 한 번에 할당할 수 있습니다.

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';

MySQL 권한을 취소하는 방법

사용자의 권한을 취소하려면 다음 구문을 사용하세요.

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

예를 들어 'tecmint' 사용자의 INSERT 권한을 취소하려면 다음 명령을 실행하세요.

MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES

사용자의 현재 권한을 확인하려면 다음을 실행하세요.

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

아래 출력에서 SELECTUPDATE만 남기고 'tecmint' 사용자에게서 INSERT 권한이 삭제되었음을 확인할 수 있습니다. testdb 데이터베이스에 대한 권한입니다.

새 사용자를 사용하여 MySQL 셸 로그인을 테스트하려면 먼저 로그아웃하세요.

MariaDB [none]> quit;

그런 다음 다시 로그인하세요.

sudo mysql -u tecmint -p

사용자의 비밀번호를 입력하고 ENTER를 눌러 셸에 액세스하세요.

사용자를 삭제하려면 데이터베이스를 삭제할 때와 마찬가지로 DROP 명령을 사용하세요.

MariaDB [none]> DROP USER 'username'@'localhost';

다음 MySQL 관련 기사를 읽어볼 수도 있습니다.

  • MySQL의 일반적인 오류를 해결하는 데 유용한 팁
  • Mytop – Linux에서 MySQL/MariaDB 성능을 모니터링하는 데 유용한 도구
  • Linux에서 기본 MySQL/MariaDB 포트를 변경하는 방법
  • Linux에서 MySQL 또는 MariaDB 루트 비밀번호를 재설정하는 방법
결론

이제 MySQL 데이터베이스 서버에서 사용자를 생성하고 권한을 편안하게 할당하거나 취소할 수 있기를 바랍니다.