[ server ][ mysql ] 사용자 계정 권한 추가, 수정, 삭제 CentOS7 mysql 접속, 계정 생성, 권한 설정 > database

본문 바로가기

사이트 내 전체검색

database

[ server ][ mysql ] 사용자 계정 권한 추가, 수정, 삭제 CentOS7 mysql 접속, 계정 생성, 권한 설…

작성일 18-12-14 15:21

페이지 정보

작성자 웹지기 조회 12,233회 댓글 0건

본문

mysql 접속 방법은 ssh root 계정에 로그인을 한 후 mysql에 로그인한다.

# mysql -uroot -p

#Enter password: 

#Welcome to the MariaDB monitor.  Commands end with ; or \g.

#Your MariaDB connection id is 9145

#Server version: 10.3.13-MariaDB MariaDB Server

#

#Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

#

#Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

#

#MariaDB [(none)]> 


mysql에 접속을 했으면 다음으로 mysql database를 선택한다.

# use mysql;

#Reading table information for completion of table and column names

#You can turn off this feature to get a quicker startup with -A

#Database changed

#MariaDB [mysql]>


mysql database의 스키마 구성을 확인해보자.

# show tables;


mysql_3png.png

 

여기서 user라고 되어 있는 부분이 사용자 계정이 정의된 table이다.

계정 정보를 조회하고 계정을 만들자.

# select host, user from user; 


mysql_4.png

 

현재 계정은 하나고 접속할 수 있는 곳은 localhost 와 127.0.0.1 뿐이다.

다음으로 계정을 만든다.

계정을 만들때 각각의 아이피로 해야 한다. localhost 와 127.0.0.1 또는 일반아이피 모두 따로 넣어주어야 한다(동시 입력 불가)

명령 : create user <계정명>@'<원하는 호스트>' identified by '<암호>'

- 호스트 부분에 들어갈 수 있는 것

 

localhost, 127.0.0.1 = 자신

% = 모두허용

공인아이피 = 해당아이피만

# create user test@localhost identified by '1234567890';

# select host, user from user;


mysql_5.png

 

test 계정이 localhost로 추가된 것을 볼 수가 있다.

이는 localhost에서만 허용되므로 외부에서 접속을 하려면 localhost 대신 % 로 설정 한다.

이번에는 외부접속이 가능한 test계정을 만든다.

# create user test@'%' identified by '1234567890';

 

mysql_6.png

 

이제 test 계정의 host가 %(외부접속)과 localhost 두개가 되었다.

외부접속시 % 부분을 192.168.%로 설정하면 192.168.xxx.xxx에서 접속이 가능하는 의미.

계정삭제는 지우고 싶은 조건이 맞지 않으면 해당 계정이 모두 삭제 되니 주의.

test계정의 localhost 계정의 삭제를 원하면

# delete from user where user='test' and host='localhost'; 

이처럼 정확한 조건이 필요하다.

# delete from user where user='test';

쿼리를 날리면 test에 해당하는 2개의 계정이 모두 사라진다.

mysql_7.png

test user의 2개의 host가 삭제가 되었다.

 

데이터베이스(스키마) 권한 제어에는 SQL 명령어 중 DCL (Data Control Language) 이 사용된다.

*DCL 종류에는 GRANT 와 REVOKE 이 있다. (두가지 모두 유효하다.)

# create database test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

//또는

# create schema test  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

스키마에 접근 가능한 계정을 만들어 보자.

//사용자의 권한을 확인한다

# show grants for test@localhost;

 

//<dbname>.<table> 부분에 *.* 을 넣게 되면 root 계정의 권한과 같아진다.(모든기능)

# grant all privileges on <dbname>.<table> to <userid>@<host> identified by '<password>' ( with <grant option> );

# grant all privileges on test.* to test@localhost identified by '1234567890'; 

//해당 계정 권한을 test database(스키마)에 모든 테이블에서 select, insert, update, delete 할 수 있게 주었다.


# grant select on <dbname>.<table> to <userid>@<host> identified by '<password>' ( with <grant option> );

# grant select on test.* to test@'%' identified by '1234567890';

//해당 계정 권한을 test database(스키마)에 모든 테이블에서 select 할 수 있게 주었다.


//권한 적용 령명

# flush privileges;


//권한 여부 확인

# show grants for test@localhost;


//부여된 권한 삭제

# revoke all on test.* from test@localhost;

    

//권한 삭제 여부 확인

# show grants for test@localhost;

 

//사용자 계정 삭제

# DROP USER [user명]@[server명];

ex) drop user user1@localhost;

 

Root의 권한은 외부에서 접속하는 부분을 추천하지 않는다

먼저 계정 root계정과 같은 외부에서 접속가능한 계정을 만든다.

다음으로 권한에 대한 설정을 해준다.

//계정생성

# create user root@'%' identified by '1234567890(패스워드)';

//관리자의 권한에 해당하는 모든 기능

# GRANT 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 ON *.* TO 'root'@'%' ;


//관리자의 권한에 해당하는 grant기능

# GRANT GRANT OPTION ON *.* TO 'root'@'%' ;

 

//한줄로 간단하게 모든기능을 넣자

# grant all privileges on *.* to root@'%' identified by '1234567890(root비밀번호)' with grant option;

  

권한(GRANT)

Privilege Meaning
ALL [PRIVILEGES] GRANT OPTION을 제외한 모든 권한.
ALTER ALTER TABLE을 할 수 있는 권한.
ALTER ROUTINE stored routines을 alter하고 drop할 수 있는 권한.
CREATE database와 table을 생성할 수 있는 권한.
CREATE ROUTINE stored routine을 생성할 수 있는 권한.
CREATE TEMPORARY TABLES CREATE TEMPORARY TABLE을 사용할 수 있는 권한.
CREATE USER CREATE USER, DROP USER, RENAME USER 과 REVOKE ALL PRIVILEGES을 사용할 수 있는 권한.
CREATE VIEW views 를 생성하고 alter할 수 있는 권한.
DELETE DELETE 할 수 있는 권한.
DROP databases, tables, 그리고 views를 drop할 수 있는 권한.
파티션 테이블에 대한 ALTER TABLE ... DROP PARTITAION 구문도 사용할 수 있게 해주는 권한
TRUNCATE TABLE 도 DROP권한이 있어야 사용이 가능.
EVENT Event Scheduler를 위해 event를 사용할 수 있는 권한.
EXECUTE stored routines를 실행할 수 있는 권한.
FILE 서버에 생성된 파일을 읽고 쓸 수 있는 권한.
LOAD DATA INFILE과 SELECT .... INTO OUTFILE 을 사용할 수 있게 해주는 권한.
GRANT OPTION 다른 계정에 grant를 하고 권한을 revoke할 수 있는 권한.
INDEX 인덱스를 생성하고 drop할 수 있는 권한.
INSERT INSERT 구문을 사용할 수 있는 권한.
LOCK TABLES SELECT 권한을 가진 테이블에 LOCK TABLES를 할 수 있는 권한.
PROCESS 모든 프로세스를 볼 수 있게 SHOW PROCESSLIST를 할 수 있는 권한. 이 권한이 없는 경우 자신의 계정에 대한 것만 확인.
PROCESS권한이 있으면 패스워드 세팅 및 수정 가능.
REFERENCES 아직 정의되지 않음.
RELOAD FLUSH구문을 사용할 수 있는 권한.
REPLICATION CLIENT Enable the user to ask where master or slave servers are
REPLICATION SLAVE Enable replication slaves to read binary log events from the master
SELECT SELECT할 수 있는 권한.
SHOW DATABASES 모든 데이터베이스에 대해 SHOW DATABASES를 할 수 있는 것. 이 권한이 없는 경우 자신의 계정에 대한 것만 확인.
SHOW VIEW SHOW CREATE VIEW를 사용할 수 있는 권한.
SHUTDOWN mysqladmin shutdown을 할 수 있는 권한.
SUPER CHANGE MASTER TO,KILL,PURGE BINARY LOGS와 SET GLOBAL문장을 실행할 수 있는 권한.
TRIGGER trigger를 생성하고 drop할 수 있는 권한.
UPDATE UPDATE 할 수 있는 권한.
USAGE no privileges의 Synonym으로 접속만 가능한 계정의 권한.

 

 


추천0

비추천 0

댓글목록

등록된 댓글이 없습니다.

전체 34건 1 페이지

이미지 목록

게시물 검색
Copyright © 즐거운 코딩 생활 ( funyphp ). All rights reserved.
PC 버전으로 보기