[MySQL] 계정 관리

MySQL에서 계정 생성 및 권한 부여와 계정 정보 수정하는 방법에 대해 알아보겠습니다.

로그인

root의 패스워드를 입력하여 로그인합니다.

1
$ sudo mysql -u root -p

계정 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| triplet_db |
+--------------------+
6 rows in set (0.435 sec)

MySQL [(none)]> use mysql;
Database changed

다음 명령어를 실행하여 사용자 계정들을 확인합니다.

1
2
3
4
5
6
7
8
9
MySQL [mysql]> SELECT user, host FROM user;
+-------------+-----------+
| User | Host |
+-------------+-----------+
| | localhost |
| mariadb.sys | localhost |
| mysql | localhost |
| root | localhost |
+-------------+-----------+

계정 생성

사용자 계정을 생성하는 방법입니다.

CREATE 문으로 생성

1
CREATE USER '계정명'@'localhost' IDENTIFIED BY '비밀번호';

INSERT 문으로 생성

1
INSERT INTO user (host, user, password) VALUES ('localhost', '계정명', password('비밀번호'));

**‘localhost’**를 **’%’**로 변경하면 원격에서 접속 가능합니다.

권한 부여

생성된 계정에 대해 모든 권한을 부여하도록 설정합니다.

GRANT 문으로 권한 부여

1
grant all privileges on *.* to 'USERNAME'@'%' identified by 'PASSWORD';

해당 데이터베이스에 대해서만 권한을 부여하도록 설정합니다.

1
grant all privileges on DB명.* to '계정명'@'%' identified by '비밀번호';

INSERT 문으로 권한 부여

1
2
INSERT INTO db (Host, Db, USer, select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv)
VALUES ('localhost', 'DB명', '계정명', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');

DB명에 ‘%’ 를 넣으면 모든 DB를 나타냅니다.

계정 정보 변경

계정의 비밀번호 변경 하는 방법입니다.

UPDATE 문으로 변경

1
UPDATE user SET password=password('비밀번호') where user='계정명';

SET 문으로 변경

1
SET PASSWORD FOR '계정명'@'localhost' = PASSWORD('비밀번호');

계정 삭제

DELETE 문으로 삭제

1
2
DELETE FROM user WHERE user = '계정명';
DELETE FROM db WHERE user = '계정명';

DROP 문으로 삭제

1
DROP USER '계정명'@'localhost';

권한 삭제

1
REVOKE ALL ON *.* FROM '계정명';

권한 확인

1
2
3
4
5
6
7
MySQL [mysql]> SHOW GRANTS FOR root;
+--------------------------------------------------------------------------------------------------------------+
| Grants for root@% |
+--------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`%` IDENTIFIED BY PASSWORD '*D08D94B3E46A8CCDA5F1682F57F8BE24F5FD1C79' |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.002 sec)

설정 적용

위의 설정 명령어들을 실행 후 다음 명령어를 실행해야 적용이 됩니다.

1
flush privileges;
Share