MySQL 사용자 계정 추가 및 관리
May 6, 2023 6:11 PM:mysql
MySQL에서 데이터베이스에 접근할 수 있는 사용자 계정을 추가할 수 있는 방법과 다양한 관리 방법에 대해서 정리하고 학습한다.
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'user_password';
user_name
이라는 사용자 계정을 생성하고, 비밀번호는 user_password
로 생성한다. 단, 이 사용자 계정은 localhost
환경에서만 접근이 가능하다. 즉 데이터베이스 서버에서만 접근가능한 계정이다.
사용자 계정 추가시 기본적으로, 데이터베이스 접근 권한이 없는데 추가 SQL을 작성해 계정 권한을 관리할 수 있다.
GRANT ALL PRIVILEGES ON user_databsae.* to 'user_name'@'localhost';
이전에 생성했던 user_name
계정은 user_database
라는 데이터베이스의 모든 테이블을 접근할 수 있도록 권한 설정한다. *
은 모든의 의미를 가지고 있으며 *.*
형태로 작성될 경우, 모든 데이터베이스의 모든 테이블에 접근 가능하다는 의미로 볼 수 있다.
권한 추가 부분의 GRANT ALL PRIVILEGES
는 모든 권한을 부여한다는 의미인데, user_database.*
에 ALL PRIVILEGES
를 적용해주었다면, 해당 계정은 user_database
데이터베이스에서 모든 테이블에 SQL을 사용할 수 있게된다. 계정에 대해 부분적인 권한만 주고싶을 경우 아래와 같이 작성한다.
GRANT SELECT, INSERT ON user_databsae.* to 'user_name'@'localhost';
해당 계정은 user_database
데이터베이스 내 테이블에서 SELECT
, INSERT
SQL만 수행할 수 있다.
계정에 부여했던 권한은 REVOKE
를 통해 권한을 취소할 수 있다.
REVOKE ALL PRIVILEGES ON user_databsae.* to 'user_name'@'localhost';
REVOKE SELECT, INSERT ON user_databsae.* to 'user_name'@'localhost';
사용자 계정의 비밀번호를 수정하는 방법은 여러가지 있다.
SET PASSWORD FOR 'user_name'@'localhost' = PASSWORD('user_password2');
여기서는 SET
을 이용하여 변경한다.
DROP
을 사용해서 사용자 계정을 삭제한다.
DROP USER 'user_name'@'localhost';
기본적으로 mysql
데이터베이스 내 user
테이블에 사용자 계정 정보가 담겨있다.
SELECT * from mysql.user;
+--------------+-----------+-------------------------------------------+
| HOST | USER | PASSWORD |
+--------------+-----------+-------------------------------------------+
| localhost | root | |
| 6fabc82b4bdb | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
+--------------+-----------+-------------------------------------------+