SW/MySQL

MySQL : 사용자 계정 생성, 권한 부여하는 방법, 예제, 명령어

얇은생각 2021. 1. 23. 07:30
반응형

MySQL은 가장 인기 있는 오픈 소스 관계형 데이터베이스 관리 시스템이다. MySQL 서버를 사용하면 사용자가 데이터베이스에 액세스하고 관리할 수 있도록 수많은 사용자 계정을 만들고 적절한 권한을 부여할 수 있습니다.

이 튜토리얼에서는 MySQL 사용자 계정을 만들고 권한을 부여하는 방법에 대해 설명합니다.

 

 

MySQL : 사용자 계정 생성, 권한 부여하는 방법, 예제, 명령어

 

 

시작하기 전

시스템에 MySQL 또는 MariaDB 서버가 이미 설치되어 있다고 가정합니다. 

모든 명령은 MySQL 셸 내에서 루트 또는 관리 사용자로 실행됩니다. 사용자 계정을 생성하고 해당 권한을 정의하는 데 필요한 최소 권한은 CREATE USER 및 GRANT입니다.

MySQL 셸에 액세스하려면 다음 명령을 입력하고 메시지가 표시되면 MySQL 루트 사용자 암호를 입력합니다.

mysql -u root -p

 

 

auth_socket 플러그인 로그인을 루트로 사용하는 MySQL 버전 5.7 이상이 있는 경우 다음을 입력합니다.

sudo mysql

 

 

 

 

새 MySQL 사용자 계정 생성

MySQL의 사용자 계정은 사용자 이름과 호스트 이름의 두 부분으로 구성됩니다.

새 MySQL 사용자 계정을 만들려면 다음 명령을 실행합니다.

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';

 

 

새 사용자를 새 사용자 이름으로 바꾸고 user_password를 사용자 암호로 바꿉니다.

위의 예에서 호스트 이름 부분은 localhost로 설정되어 사용자가 로컬 호스트(즉, MySQL Server가 실행되는 시스템)에서만 MySQL Server에 연결할 수 있음을 의미합니다.

다른 호스트에서 액세스 권한을 부여하려면 원격 시스템 IP로 호스트 이름 부분을 변경합니다. 예를 들어 IP 10.8.0.5를 사용하는 시스템에서 액세스 권한을 부여하려면 다음을 실행합니다.

CREATE USER 'newuser'@'10.8.0.5' IDENTIFIED BY 'user_password';

 

 

모든 호스트에서 연결할 수 있는 사용자를 생성하려면 '%' 와일드카드를 호스트 부분으로 사용하십시오.

CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';

 

 

 

MySQL 사용자 계정에 권한 부여

사용자 계정에는 여러 가지 유형의 권한을 부여할 수 있습니다. MySQL에서 지원하는 전체 권한 목록을 여기에서 찾을 수 있습니다. 

가장 일반적으로 사용되는 권한은 다음과 같습니다.

ALL PRIVILEGS – 사용자 계정에 모든 권한을 부여합니다.

CREATE – 사용자 계정은 데이터베이스와 테이블을 만들 수 있습니다.

DROP - 사용자 계정은 데이터베이스와 테이블을 삭제할 수 있습니다.

DELETE - 사용자 계정은 특정 테이블에서 행을 삭제할 수 있습니다.

INSERT - 사용자 계정은 특정 테이블에 행을 삽입할 수 있습니다.

SELECT – 사용자 계정은 데이터베이스를 읽을 수 있습니다.

UPDATE - 사용자 계정에서 테이블 행을 업데이트할 수 있습니다.

 

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

GRANT permission1, permission2 ON database_name.table_name TO 'database_user'@'localhost';

 

 

다음은 몇 가지 예입니다. 

특정 데이터베이스를 통해 사용자 계정에 모든 권한을 부여합니다.

GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';

 

 

모든 데이터베이스의 사용자 계정에 모든 권한을 부여합니다.

GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';

 

 

데이터베이스의 특정 테이블을 통해 사용자 계정에 모든 권한을 부여합니다.

GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';

 

 

특정 데이터베이스를 통해 사용자 계정에 여러 가지 권한을 부여합니다.

GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';

 

 

 

MySQL 사용자 계정 권한 표시

특정 MySQL 사용자 계정에 부여된 권한을 찾으려면 SHOW GRANTS 문을 사용하십시오.

SHOW GRANTS FOR 'database_user'@'localhost';

 

 

출력은 다음과 같습니다.

# +---------------------------------------------------------------------------+
# | Grants for database_user@localhost                                       |
# +---------------------------------------------------------------------------+
# | GRANT USAGE ON *.* TO 'database_user'@'localhost'                        |
# | GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' |
# +---------------------------------------------------------------------------+
# 2 rows in set (0.00 sec)

 

 

 

MySQL 사용자 계정에서 권한 해지

사용자 계정에서 하나 이상의 권한을 해지하는 구문은 권한을 부여할 때와 거의 동일합니다. 

특정 데이터베이스를 통해 사용자 계정에서 모든 권한을 취소하려면 다음 명령을 실행합니다.

REVOKE ALL PRIVILEGES ON database_name.* FROM 'database_user'@'localhost';

 

 

 

기존 MySQL 사용자 계정 제거

MySQL 사용자 계정을 삭제하려면 DROP USER 문을 사용하십시오. 

DROP USER 'user'@'localhost'

 

 

위의 명령은 사용자 계정과 권한을 제거합니다.

반응형