IT/DataBase

[MySql] 계정, DB, 권한 관리, 유용한 SQL

원창연 2020. 12. 8. 12:08

ㅁ 계정관련

▶ root계정로그인
   $mysql -u root -p
   Enter password:[패스워드]
  ※ Mysql(MariaDB동일)은 command나 Sql툴로 접근 command같은 내용이 처리됨 
  
▶ 계정관련
   select host, user, password from user;		               :조회
   create user [계정아이디]@'[접속지제한]' identified by '비밀번호';  :생성
     ※ 접속지제한  % : 전체, localhost : 해당서버만, ip인경우 특정 ip 에서만 접근제어
     ※ 접속지제한에 싱글따옴표 필수, MariaDB는 패스워드 정책에 따라 10글자 필수
   다른 방법으로는

   INSERT INTO user (Host, User, Password) VALUES ('localhost', '계정아이디', password('비밀번호'));
   FLUSH privileges;
   
   delete from user where user='[계정아이디]';
   다른 방법으로는
   drop user '사용자ID'@localhost;

ㅁ 데이터베이스 관리(생성,권한, 권한반영)

▶ DataBase변경
   use mysql
   ※ command 모드에만 적용
   
▶ DataBase(스키마) 관리
   show databases;        : 조회
   create schema DB명;    : 생성
   옵션예) create database DB명 default character set utf8;
   drop database DB명;    : 삭제  
    
▶ 설정변경에 대한 반영 command
     flush privileges

ㅁ 테이블 관리

▶ 테이블 관련 
   - database 테이블조회
     show tables;           
   - 권한 추가: localhost접속시만 처리가능
     grant all privileges on '스키마명'.'테이블명' to '계정명'@'호스트' identified by '계정비밀번호' with grant option;   
       ※스키마명.*  는 해당 스키마에 전부
   - 권한조회
     show grants for '계정명'@'호스트';                          
   - 권한 삭제
     revoke all on '스키마명'.'테이블명' from '계정명'@'호스트';  
     
▶ primary key 관리
   alter table 테이블명 drop primary key;
   alter table 테이블명 add primary key(컬럼명, 컬럼명);

 

ㅁ 테이블 조회

SELECT  
       TABLE_SCHEMA 스키마
      ,TABLE_NAME    테이블영문명 
      ,TABLE_COMMENT 테이블한글명
      ,TABLE_TYPE      테이블타입
      ,TABLE_COLLATION 테이블구조  
      ,TABLE_ROWS      레코드건수
       FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA like '${schema}%'
  AND (TABLE_NAME LIKE '${var}' 
   OR TABLE_COMMENT LIKE '${var}')"
   
스키마명, 테이블명(한글)   

 

ㅁ 컬럼조회

 SELECT ORDINAL_POSITION AS NO
     , (CASE WHEN COLUMN_KEY !='' THEN 'Y' 
               ELSE '' END) PK
     , COLUMN_NAME 영문명
     , COLUMN_COMMENT 한글명 
     ,IS_NULLABLE AS NULLYN
     , DATA_TYPE 데이터타입
     , (case when DATA_TYPE='int' 
             then NUMERIC_PRECISION 
             else CHARACTER_MAXIMUM_LENGTH end) 자릿수
     , NUMERIC_SCALE 소수점
     , ' ' 데이터
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA= '{$schema}'
    AND TABLE_NAME = '${var}'
 ORDER BY ORDINAL_POSITION"