Programming/MySQL

MySQL 계정 생성 및 권한 부여 방법 정리

Jan92 2022. 10. 27. 23:01

MySQL 계정 생성 및 권한 부여

MySQL을 설치하게 되면 가장 먼저 사용되는 계정이 바로 root 계정인데요.

root 계정의 경우 관리자 계정이기 때문에 데이터베이스에 대한 모든 권한을 가지고 있습니다. 때문에 실제 서비스에 사용되는 DB의 경우 실질적인 관리자만 root 계정을 사용하고 이외의 DB 사용자들은 용도에 맞는 권한을 부여받은 계정을 이용하는 것이 데이터베이스를 관리하는 데 있어서 좋은 방식입니다.

그러면 아래 내용을 통해 MySQL에서 계정 생성 및 권한을 부여하는 방법에 대해서 살펴보겠습니다.

 

 


 

1. 접속 및 Database 변경

mysql select user

//mysql 접속
> mysql -u root -p
Enter password:

//database 변경
> use mysql;

//계정 조회
> select host, user, plugin, authentication_string from user;

MySQL에 접속 및 user를 조회하는 과정입니다.

 

MySQL 8.0에서 인증에 대한 플러그인을 따로 설정하지 않는 경우, 기본 플러그인인 caching_sha2_password가 적용되어 비밀번호가 생성됩니다.

(비밀번호에 사용되는 plugin을 변경하고 싶은 경우는 my.conf 파일 수정을 통해 설정할 수 있습니다.)

 

 

 

2. 계정 생성

create user

//내부ip(localhost) 접속 가능 계정
CREATE USER '계정아이디'@'localhost' IDENTIFIED BY '비밀번호';
ex) create user 'testId1'@'localhost' identified by 'testPw1';

//외부ip 접속 가능 계정
CREATE USER '계정아이디'@'%' IDENTIFIED BY '비밀번호';
ex) create user 'testId1'@'%' identified by 'testPw1';

(MySQL 5.7 이상부터 CREATE USER 구문을 사용하여 계정을 생성합니다.)

 

'계정 아이디'@ 다음으로 입력되는 호스트 부분의 'localhost''%'는 접속할 수 있는 ip의 차이를 설정하는 것인데요.

localhost의 경우 내부 ip만 접속할 수 있는 계정이 되고, %의 경우 외부 ip에서도 접속이 가능한 계정이 됩니다.

 

 

 

3. 계정 권한 부여

grant user

//모든 DB에 모든 권한 부여
GRANT ALL PRIVILEGES ON *.* TO '계정아이디'@'호스트';
ex) grant all privileges on *.* to 'testId1'@'loalhost';

//특정 DB에 모든 권한 부여
GRANT ALL PRIVILEGES ON 데이터베이스명.* TO '계정아이디'@'호스트';
ex) grant all privileges on board.* to 'testId1'@'loalhost';

//특정 DB에 특정 권한 부여
GRANT SELECT, INSERT, UPDATE ON 데이터베이스명.* TO '계정아이디'@'호스트';
ex) grant select, insert, update on board.* to 'testId1'@'loalhost';

(권한을 부여하는 명령어는 grant이며, 권한을 제거하는 명령어는 revoke입니다.)

 

권한 부여의 경우 명령어에 따라서 모든 DB에 모든 권한을 부여하거나, 특정 DB에 모든 권한을 부여, 또는 특정 DB에 원하는 권한만 부여할 수도 있는데요.

 

 

flush privileges

//권한 적용
FLUSH PRIVILEGES;

//권한 부여 확인
SHOW GRANTS FOR '계정아이디'@'호스트';

권한 부여 이후 flush privileges 명령어를 통해 최종적으로 권한을 적용시켜야 하며, 위 show grants for 명령어를 통해 권한이 부여되었는지 확인할 수도 있습니다.

 

 

 

4. 계정 삭제

drop user

DROP USER '계정아이디'@'호스트';
ex) drop user 'testId1'@'localhost';

DELETE FROM USER WHERE USER = '계정아이디';
ex) delete from user where user = 'testId1';

계정을 삭제하고 싶은 경우에는 다음 두 가지 명령어(drop, delete)를 통해 삭제할 수 있습니다.

 

 

 

< 함께 보면 좋은 글 >

2021.07.24 - [Programming/MySQL] - MySQL 비밀번호 변경 방법, How to change MySQL root password

2022.10.24 - [Programming/MySQL] - MySQL, MariaDB 데이터베이스 백업 및 복구하는 방법