데이터베이스 관리 시스템에서 사용자 관리는 시스템 보안과 효율적인 데이터 관리에 있어 매우 중요하다. MySQL에서는 사용자를 생성하고, 특정 권한을 부여하여 데이터베이스 리소스에 대한 접근을 제어할 수 있다.
1. 사용자 추가하기
MySQL에서 새로운 사용자를 추가하는 것은 간단한 명령어를 통해 수행한다. 사용자를 생성할 때는 해당 사용자가 로그인할 수 있는 호스트와 비밀번호도 함께 지정한다.
사용자 추가 형식
create user '사용자명'@'서버IP' identified by '비밀번호';
# localhost에서만 접근 가능한 계정
create user '사용자명'@'localhost' identified by '비밀번호';
# 모든 IP에서 접속 가능한 계정
create user '사용자명'@'%' identified by '비밀번호';
이번에 사용자를 추가 할 때는 MySQL 8.0 Command Line Client를 사용해 계정을 추가했다 MySQL Workbench 를 통해서도 명령어를 통해 계정을 만들수 있으니 참고하자
MySQL 8.0 Command Line Client를 열고 root계정으로 로그인한다
root계정 비밀번호 입력해서 로그인
create user 'wonhee'@'%' identified by '0210';
위 문장 입력을 통해 모든 계정
- create user : MySQL에서 새 사용자를 생성
- 'wonhee'@'%': 사용자 이름과 해당 사용자가 연결할 수 있는 호스트를 지정. 여기서 wonhee는 사용자 이름, '%'는 이 사용자가 어떤 호스트에서든 연결할 수 있음을 의미한다. 특정 호스트에서만 연결을 허용하려면 '%'를 특정 호스트 이름이나 IP 주소로 대체해야 한다.
- identified by '0210' : 이는 사용자의 비밀번호를 설정한다. 이 경우 비밀번호는 0210이다.
2. 사용자 목록 조회하기
use mysql; SQL 명령은 특정 데이터베이스를 선택하여 상호 작용하는 데 사용된다. 이 명령을 실행함으로써 이후의 작업이나 쿼리가 지정된 데이터베이스(mysql 데이터베이스) 내에서 실행되도록 MySQL 서버에 지시한다.
use mysql;
select user, host from user; 명령어는 MySQL의 mysql 데이터베이스 내의 user 테이블에서 사용자 이름(user)과 호스트(host)를 선택하여 조회하는 SQL 쿼리이다. 이 쿼리는 데이터베이스에 등록된 모든 사용자와 그들이 접근 가능한 호스트의 리스트를 보여준다.
select user, host from user;#사용자 목록 조회
3. 사용자 권한 할당 상세 옵션
- create, drop, alter: 테이블 생성(create), 삭제(drop), 변경(alter)에 대한 권한을 의미한다. 사용자가 테이블을 만들고, 삭제하며, 구조를 변경할 수 있게 허용한다.
- select, insert, update, delete: 테이블의 데이터를 조회(select), 삽입(insert), 수정(update), 삭제(delete)할 수 있는 권한을 부여한다. 이는 데이터 관리 작업에 필수적인 권한이다.
- all: 데이터베이스의 모든 권한을 사용자에게 부여한다. 이 권한을 받은 사용자는 해당 데이터베이스에 대해 모든 종류의 작업을 수행할 수 있다.
- usage: 실질적인 권한을 부여하지 않고 계정만 생성한다. 이 권한 설정은 사용자가 데이터베이스 자원을 사용할 수 있지만, 어떠한 데이터베이스 작업도 수행할 수 없게 한다.
사용자 권한 할당 형식
grant 권한 on 데이터베이스.테이블 to '사용자'@'%';
grant all on *.* to 'wonhee'@'%';#모든 ip에서 접근이 가능
flush privileges;#변경사항 즉시 적용됨
사용자 'wonhee'에게 어떤 IP에서든 접근 가능하도록 모든 데이터베이스와 테이블에 대해 모든 권한을 부여한다.
4. 사용자 권한 조회하기
사용자 권한 조회 형식
show grants for '계정명'@'%';
show grants for 'wonhee'@'%';
사용자 'wonhee'의 권한 설정을 조회합니다. 이 명령은 사용자가 가진 모든 권한을 보여준다.
4. 사용자 권한 제거하기
사용자 권한 제거 형식
revoke 권한명 privileges on *.* from '계정명'@'%';
revoke all privileges on *.* from 'wonhee'@'%';
flush privileges;
사용자 'wonhee'의 모든 권한을 제거합니다. 이 명령은 사용자에게 부여된 권한을 회수한다.
권한 확인을 해보면 권한을 모두 삭제하여 'wonhee'의 권한이 USAGE로 바뀌었다 사실상 아무런 실제 데이터베이스 작업 권한을 부여하지 않는 것이다.
4. 사용자 삭제하기
사용자 제거 형식
drop user '계정명'@'%';
drop user 'wonhee'@'%';
지정된 호스트에서 접근하는 사용자 'wonhee'계정을 삭제한다.
삭제한 후 사용자 확인을 해보니 삭제 된것을 확인 할 수 있었다
이러한 명령들은 MySQL 데이터베이스의 보안과 접근 제어에 매우 중요하며, 데이터베이스 관리자가 주로 사용하는 명령어들이다. 사용자와 권한을 적절히 관리하는 것은 데이터베이스의 안정성과 보안을 유지하는 데 필수적이니 사용자 권한을 적절히 부여해 관리 할 줄 알아야한다.
'인공지능 > 데이터분석' 카테고리의 다른 글
파이썬으로 MySQL 쿼리 실행하기 (2) | 2024.10.23 |
---|---|
파이썬과 MySQL 연동하기 (2) | 2024.10.22 |
고급 SQL 기법 활용하기: UNION, SubQuery, View (16) | 2024.10.22 |
MySQL 문자열 다루기 (0) | 2024.10.22 |
정규화된 테이블을 활용한 데이터베이스 관리 (0) | 2024.10.22 |