MySQL

사용자 관리하기.MySQL

john_ 2023. 2. 3. 10:14
728x90

DB 사용자 관리의 필요성

  • 현재까지 사용 방법
    • MySQL 관리자인 root로 접속해서 사용
  • 실무에서의 문제
    • MySQL 데이터베이스를 다양한 사용자나 응용프로그램에서 접속해 사용합니다.
    • 모든 사용자가 관리자로 접속을 한다면 데이터가 유출되거나 증발하는 끔찍한일이 일어날수 있습니다.


따라서 역할에 맞게 권한을 따로 주어야 합니다.

  • 팀장
    • 데이터베이스 관리자(DBA)의 권한 부여를 합니다,
    • workbench - > [Local instance MySQL]을 클릭 해서 접속
      • 사용자를 생성하는 권한은 root 에게만 있습니다.
    • [Navigator]의 [Administration] 탭 -> [User and Privileges]클릭

  • [User and Privileges]창에서 왼쪽 아래 <Add Account> 클릭한 후 [Login] 탭의 [Login Name]에 'director' 입력
    • 비밀번호 입력후 <Apply> 클릭 -> director 사용자 등록 확인

 

 

  • [Account Limits] 탭으로 쿼리 한계를 설정 -> 0은 제한 없음
  • [Administrative Roles]에서는 MySQL 자체에 대한 권한설정
    • [Role]의 <DBA> 체크하여 모든 권한 설정 적용


사장(CEO)

  • MySQL의 모든 데이터에 읽기(Select) 권한 부여
  • 계정 등록방법은 '팀장'과 같음
  • [Administrativ Roles] 탭 클릭
    • 사장은 MySQL의 읽기(Select)로 계획되어 있음
    • [Global Privileges] 중에서 <SELECT>체크
    • 왼쪽 Role 중에 <Custom>이 자동으로 체크


  • 일반직원(staff)
    • shopdb 데이터베이스의 모든 테이블에 대해 (Select), 쓰기(Insert, Update, Delete) 권한 부여
    • 스토어드 프로시저 등을 생성(Create Routin) 하고 수정(Alter Routine) 할수 있는 권한 부여

  • employees 데이터 베이스의 테이블에 대해서는 읽기(Select) 권한만 부여


TUI 환경에서의 입력문

사용자 생성
CREATE USER 사용자명@'접속할IP대역,IP' IDENTIFIED BY '패스워드';
CREATE USER DIRECTOR@'%' IDENTIFIED BY 'DIRECTOR';

권한부여
GRANT 권한(SELECT, CREATE, ....) ON *.*(데이터베이스.테이블명) TO DIRECTOR@'%' WITH GRANT OPTION;
GRANT ALL ON *.* TO DIRECTOR@'%' WITH GRANT OPTION;

사장님(CEO) : 읽기만 가능
CREATE USER CEO@'%' IDENTIFIED BY 'CEO'
GRANT SELCET ON *.* TO CEO@'%';

일반직원(Staff) : 특정 DB만 들어가고 shopdb(읽기/쓰기), employees(읽기) 설정
CREATE USER staff@'%' IDENTIFIED BY 'staff';
GRANT SELECT, INSERT, UPDATE, DELETE ON shopdb.* TO staff@'%';
GRANT SELECT ON employees.* TO staff@'%';
----------------------
centos8에 리눅스 설치
-------------------------

dnf -y install mariadb mariadb-server

systemctl status mariadb = 설치확인

systemctl start mariadb = mariadb 시작

exit로 나올수 있음

----

mysqladmin -u root password '1243';
mysql
(Access denied)

mysql -u root -p1234

---------------------

리눅스에서 mysql 권한주기

GRANT ALL ON *.* TO root@'%' WITH GRANT OPTION;

리눅스 방화벽 포트열기
firewall-cmd --add-port=3306/tcp
firewall-cmd --permanent -add-port=3306/tcp
firewall-cmd --reload

방화벽 끄기
systemctl stop firewalld
728x90

'MySQL' 카테고리의 다른 글

SQL기본.mySQL  (0) 2023.02.06
MYSQL 팁(계속추가)  (0) 2023.02.06
SELECT문.mySQL  (0) 2023.02.06
char()와 varchar()의 차이  (0) 2023.02.03
데이터베이스 모델링  (0) 2023.02.02