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';
아래 출력에서 SELECT 및 UPDATE만 남기고 '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 데이터베이스 서버에서 사용자를 생성하고 권한을 편안하게 할당하거나 취소할 수 있기를 바랍니다.