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

본문 바로가기
사이트 내 전체검색

database

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

페이지 정보

작성자 웹지기 댓글 0건 조회 12,259회 작성일 18-12-14 15:21

본문

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

댓글목록

등록된 댓글이 없습니다.

Total 34건 2 페이지
  • 19 [ Mysql ] 시간및 날짜 함수 정리
  • MySQL에서 사용되는 날짜 함수에 대해서 정리합니다. 아래 정리된 함수중 절반만 숙지해도 날짜 및 시간에 대해서는 쉽게 컨트롤할 수 있을것 같네요^^ 현재 날짜 및 시간을 얻는 함수 - NOW() : 현재 날짜 및 시간을 반환합니다. - SYSDATE() : NOW()와 동일합니다. mysql&gt; select NOW(); +---------------------+ | NOW() | +---------------------+ | 20...
  • 웹지기 09-11 7566 0 0 댓글 0
  • 18 [ mysql ] 중복데이터 추출 할 때 group by having 각각의 데이터별로 중복값 유무 검색
  • 중복데이터가 몇개이상인 것을 검색하고 싶을 때 중복데이터를 추출 할 때 group by having절을 사용해서 검색을 합니다. 중복데이터가 몇개이상인 것을 검색하고 싶을 때 select *, count(검색필드명 또는 *) as ok from 테이블명 where 필드명=값 group by 검색필드명 having count(검색필드명 또는 *) &gt; n 이런식으로 쿼리를 실행시키면 한 필드마다의 중복된 값들이 표기되며 몇개씩 중복되어 있는지 알 수 가 있다. ...
  • 웹지기 06-10 21468 0 0 댓글 0
  • 16 [ Mysql ] function 만들기
  • 먼저 함수를 정의를 하고 입력할 값을 넣어서 자리를 만들어 준다. 가령 함수를 FN_GET_DELEVERY_ATOTAL() 로 사용하고 싶다고 하고 함수에 들어갈 파라미터 값들을 각각 정의해준다. 그러면 FN_GET_DELEVERY_ATOTAL('id', 'status', 'sdate', 'edata'); 이렇게 해서 검색을 하는 방식이다. 조건문에는 어떤식으로 검색을 할 것인지의 조건을 나열해 주면 된다. DELIMITER $$ CREATE FUNCTIO...
  • 웹지기 05-15 6514 0 0 댓글 0
  • 15 [ mysql ] 데이터 유형과 범위
  • 문자형 데이터타입# 데이터 유형 정의 CHAR(n) 고정 길이 데이터 타입(최대 255byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다. VARCHAR(n) 가변 길이 데...
  • 웹지기 12-09 7627 0 0 댓글 0
  • 14 [ Mysql ] 데이터 형 set 사용법
  • SELECT * FROM 테이블명 WHERE 셋형필드명 LIKE '%value%'; SELECT * FROM 테이블명 WHERE FIND_IN_SET('value',필드명) &gt; 0; SELECT * FROM 테이블명 WHERE 필드명='val1,val2'; SELECT * FROM 테이블명 WHERE 필드명 &amp; 1;
  • 웹지기 09-27 6812 0 0 댓글 0
  • 13 [ mysql ] heidiSQL로 db 백업시 테이블명 대소문자 확인
  • heidiSQL db를 백업하면서 lang_ch_ZN lang_en_US 라는 테이블이 있었는데 백업을 해보니 모두 소문자로 백업이 되었다. 게시글을 못가져와서 확인해보니 테이블명 대소문자 때문에 그랬다. 대소문자 꼭 확인하자
  • 장승원 11-04 6795 0 0 댓글 0
  • 12 [ mysql ] CentOS 7 mysql MariaDB 실행 / 설정 / 방화벽 / 계정생성
  • MariaDB 실행하기 마리아db설치는 아래 링크를 따라하세요 https://funyphp.com/archive/knowledge/109 먼저 db가 실행중인지 확인하고 실행중이 아니라면 실행을 시켜줍니다. systemctl status mysql systemctl start mysql 서비스에 등록이 되어있지 않으면 서비스에 등록해 준다. # systemctl enable mariadb.service 방화벽 설정 # firewall-cmd...
  • 웹지기 12-11 7057 0 0 댓글 0
  • 11 [ mysql ] mairadb 비밀번호 오류
  • mysql 비밀번호 오류시 접속이 안되는 현상 기동을 시키고 mysql로 접속해서 user테이블을 확인한다 # mysqld --skip-grant-tables # mysql # select * from user; 접속이 되지 않으면 복구를 시도해본다. # repair table user; # check table user quick; 에러 해결이 안된 경우 +------------+-------+----------+-...
  • 웹지기 07-17 5236 0 0 댓글 0
  • 10 [ mysql ] SQL 정의와 종류(DML, DDL, DCL, TCL)
  • SQL (Structured Query Language) - SQL은 관계형 데이터베이스에서 데이터 정의(DDL), 데이터 조작(DML), 데이터 제어(DCL)를 하기 위해 사용하는 언어 - 단순 스크립트가 아닌 독립된 하나의 개발 언어 - 다른 프로그래밍 언어와 달리 관계형 데이터베이스에 대한 접속 용도만 사용 SQL (Structured Query Language)종류 명령어 종류 명령어 ...
  • 웹지기 05-15 6579 0 0 댓글 0
  • 9 [ mysql ] 데이터 값 일괄 변경( replace )
  • @데이터 검색을 통해서 바꾸고자 하는 문자가 있는지 확인 # SELECT * FROM table_name WHERE column LIKE '%찾는문자열%' @데이터 변경 # UPDATE table_name SET column = REPLACE( column, '기존문자열', '변경문자열' )
  • 웹지기 05-14 13839 0 0 댓글 0
  • 8 [ mysql ] Cannot start session without errors, please check …
  • 세션오류 해결방법 php.ini 를 찾아서 수정해야함session.auto_start = 0 =&gt; session.auto_start = 1로 바꾸고 아파치 재시작홈페이지에 오류가 없을시 그대로 사용홈페이지에 오류가 발생하고 phpmyadmin 접속이 정상이라면 phpmyadmin로그인 한번해주고session.auto_start = 1을 다시 session.auto_start = 0 수정하고 아파치 재시작그럼 웹서버 웹db 모두 정상적으로 됨 [이 게시물은 웹지기님에 의해 2019-0...
  • 웹지기 10-01 5434 0 0 댓글 0
  • 7 [ mysql ] mysql_free_result 결과에 대한 메모리(memory)에 있는 내용을 모두 제거
  • mysql_free_result(PHP 3, PHP 4 , PHP 5)mysql_free_result -- Free result memory설명int mysql_free_result ( int result)mysql_free_result()는 result에 대한 메모리(memory)에 있는 내용을 모두 제거한다.mysql_free_result()는 결과로부터 얻은 질의 값이 커서 많은 메모리를 사용할 염려가 있을 때 사용된다. 단, 결과 값은 스크립트(script) 실행부가 종료되면서 메모리에서 ...
  • 웹지기 10-01 6856 0 0 댓글 0
+2
  • 5 [ mysql ] mysql tool HeidiSQL - mariaDB
  • 링크 페이지로 이동하면 heidisql 버젼별 적용된 mariaDB가 보인다. heidisql 링크를 클릭해서 다운로드 페이지로 이동한다. 다운로드 버젼중에 무설치버젼인 Portable-64를 다운받아서 압축을 풀어주면 사용이 가능해진다. 설치가 압축을 풀게 되면 그림처럼 사용이가능해 진다. [이 게시물은 웹지기님에 의해 2019-03-15 15:33:40 knowledge에서 이동 됨]
  • 웹지기 12-26 7032 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
280
어제
7,139
최대
33,828
전체
8,413,975

그누보드5
Copyright © funyphp.com. All rights reserved.