[MYSQL] 1. 계정 생성 / 권한 부여

Jemma·2021년 11월 27일
2

mysql

목록 보기
1/2

mysql Server version: 8.0.27 Homebrew & mac M1

1. MySQL 서버 & DB 접속

1) 서버에 접속하기

mysql.server start

2) MySQL DB 로그인 (root 계정 이용 시)

mysql -u root -p


2. 사용자 계정 추가

1) 사용 중인 사용자 계정 확인하기

-- root 계정의 데이터베이스 중 'mysql' 이라는 데이터베이스 선택하기
mysql> use mysql;


-- 'user' 이라는 테이블의 정보에서 사용자 계정 확인하기
mysql> select host, user from user;

2) 사용자 계정 생성하기

(1) 아이디만 생성

mysql> create user 계정ID; 

(2) 아이디 + 비밀번호 + host 생성

-- [주의] 계정ID @ localhost 이렇게 띄어쓰기하면 syntax error 발생
mysql> create user 계정ID@localhost identified by '비밀번호';

(3) localhost만 추가된 계정에 외부 host 접근 권한 추가

-- 기존에 사용하던 계정ID와 동일한 계정으로 추가해 준다
mysql> create user 계정ID@'%' identified by '비밀번호';


3. 계정 권한 부여

(1) 모든 DB, 테이블 관리 권한 부여

-- privileges on [데이터베이스 이름].[테이블 이름]
mysql> grant all privileges on *.* to 계정ID@localhost idnetified by '비밀번호';

All privileges on 시 부여되는 권한 :
❈ user 관리 기능을 제외한다면, root 계정에 필적하는 권한이 부여됨

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE, APPLICATION_PASSWORD_ADMIN, AUDIT_ADMIN, AUTHENTICATION_POLICY_ADMIN, BACKUP_ADMIN, BINLOG_ADMIN, BINLOG_ENCRYPTION_ADMIN, CLONE_ADMIN, CONNECTION_ADMIN, ENCRYPTION_KEY_ADMIN, FLUSH_OPTIMIZER_COSTS, FLUSH_STATUS, FLUSH_TABLES, FLUSH_USER_RESOURCES, GROUP_REPLICATION_ADMIN, GROUP_REPLICATION_STREAM, INNODB_REDO_LOG_ARCHIVE, INNODB_REDO_LOG_ENABLE, PASSWORDLESS_USER_ADMIN, PERSIST_RO_VARIABLES_ADMIN, REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN, RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER, ROLE_ADMIN, SERVICE_CONNECTION_ADMIN, SESSION_VARIABLES_ADMIN, SET_USER_ID, SHOW_ROUTINE, SYSTEM_USER, SYSTEM_VARIABLES_ADMIN, TABLE_ENCRYPTION_ADMIN, XA_RECOVER_ADMIN

(2) 특정 DB에만 모든 관리 권한 부여

mysql> grant all privileges on DB이름.* to 계정ID@localhost identified by '비밀번호';

(3) 외부 host에서 특정 DB를 관리할 수 있도록 모든 권한 부여

mysql> grant all privileges on DB이름.* to 계정ID@'%' identified by '비밀번호';

(4) 권한 부여 내용 메모리에 반영하기

mysql> flush privileges;

(5) 권한이 잘 부여되었는지 확인하기

mysql> show grants for 계정ID@localhost;


4. 계정 삭제

drop user 계정ID@localhost;
profile
꽃길만 걸어요 우리

1개의 댓글

comment-user-thumbnail
2022년 7월 14일

안녕하세요~ mysql 권한에 대한 내용을 도움받다가 오타가 있어서 알려드려요
3. (1) 모든 DB, 테이블 관리 권한 부여
SQL구문의 idnetified 부분 오타가 있습니다 :)

답글 달기