사용자 도구

사이트 도구


wiki:database:mariadb

문서의 이전 판입니다!


MariaDB

  • description : MariaDB, Mysql 관련 자료 정리
  • author : 주레피
  • email : dhan@repia.com
  • lastupdate : 2020-02-08

주의 사항

  • 대소문자 주의하는 것에 대해 고민하자

시작/종료

CentOS7

// 상태 보기
[mysql@dev tmp]$ systemctl status mariadb
 
// 시스템 부팅시 자동 시작
[mysql@dev tmp]$ systemctl enable mariadb
 
// MariaDB 재시작
[mysql@dev tmp]$ systemctl restart mariadb

백업, Dump

mysql db

user table 사용자 추가

INSERT INTO mysql.`user`
(Host, `User`, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, Event_priv, Trigger_priv, Create_tablespace_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections, plugin, authentication_string, password_expired, is_role)
VALUES('%', '__user__', password('__password__'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, '', '', 'N', 'N')
;

db table 사용자 추가

INSERT INTO mysql.db
(Host, Db, `User`, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Execute_priv, Event_priv, Trigger_priv)
VALUES('%', '__db__', '__user__', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');

적용하기

FLUSH privileges;

사용자 생성

사용자 생성

MariaDB [(none)]> create user '${User }'@'${Host }' identified by '${Password }';
Query OK, 0 rows affected (0.00 sec)

사용자 권한 변경(${DB }내 모든 테이블)

MariaDB [(none)]> grant all privileges on ${DB }.* to '${User }'@'${Host }';
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

LOCK, UNLOCK

ALTER USER '${User }'@'${Host }' ACCOUNT LOCK;
ALTER USER '${User }'@'${Host }' ACCOUNT UNLOCK;

MySQL, MariaDB의 DB, 계정, 권한 생성 및 설정
[mysql] mysql, mariaDB 계정 생성, 권한 추가
Account Locking

함수(function) 생성

프로시져, 뷰 확인 방법

[프로시져 목록 확인방법]
mysql> SHOW PROCEDURE STATUS 
 
[프로시져 스크림트 확인방법]
mysql> SHOW CREATE PROCEDURE uso_Get_Mini_Evaluation
 
[뷰 스크립트 확인방법]
mysql> SHOW CREATE VIEW v_core_ability_examination

MySQL 프로시져, 뷰 확인방법

예제

  • ID,CD 값으로 해당 NAME을 조회하는 함수
  • delimiter(구문문자) 사용하여 함수생성문 안에서 문장의 구분이 쉽도록 설정한다 (필수 X)
delimiter $$
DROP FUNCTION IF EXISTS dbname.getCodeIdByName $$
CREATE FUNCTION dbname.getCodeIdByName(findCode VARCHAR(100) ) RETURNS VARCHAR(20)
   BEGIN
      DECLARE getName VARCHAR(20);
      SET getName = NULL;
      SELECT CODE_ID_DET  INTO getName FROM COM_CODE_DET WHERE CODE_NM_DET= findCode;  
      RETURN getName;
   END $$
delimiter ;
SQL 작성후 DBeaver에서는 CTRL+ENTER(sql 실행)를 사용시 함수 적용이 안되므로 반드시 ALT + X(스크립트 실행) 를 사용하여 함수생성 결과를 확인한다.

MariaDB 업데이트

[mysql@dev tmp]$ mysql_upgrade -u root -p 

등록된 DATA로 날짜 비교

TIMESTAMPDIFF

  • 사용법
    • TIMESTAMPDIFF(단위, 날짜1, 날짜2);
  • 단위
    • SECOND : 초
    • MINUTE : 분
    • HOUR : 시
    • DAY : 일
    • WEEK : 주
    • MONTH : 월
    • QUARTER : 분기
    • YEAR : 연
  • 예시 (분)
    • 쿼리 : SELECT TIMESTAMPDIFF(MINUTE, '2017-03-01', '2018-03-28');
    • 결과 : 564480

CONCAT 함수

예시
SELECT 
  aei.ABILITYUNIT_EL_NM
  , group_concat(arr.RES_ROLES separator '|') AS RES_ROLES_RES
  , aei.AUE_CD
FROM 
  ABILITYUNIT_INFO ai
GROUP BY aei.ABILITYUNIT_EL_NM

위의 쿼리실행 시 여러 row로 있던 RES_ROLES의 값들이 한 row의 RES_ROLES_RES컬럼으로 select된다.

페이징

페이징 기본(둘다 같은 결과 나온다)

SELECT boardno, account, subject, content, createdate
FROM board
ORDER BY boardno DESC
LIMIT  0, 10
SELECT boardno, account, subject, content, createdate
FROM board
ORDER BY boardno DESC
LIMIT 10 OFFSET 0

테이블 복사

스키마(SCHEMA) 복사

CREATE TABLE ${NEW_TABLE} LIKE ${OLD_TABLE}

스키마(SCHEMA)와 데이터 복사

CREATE TABLE ${NEW_TABLE} ( SELECT * FROM ${OLD_TABLE} )

데이터 복사

INSERT INTO ${DEST_TABLE} ( SELECT * FROM ${SOURCE_TABLE} )

Encoding

Logging

Migration To Oracle

SQL Developer로 하면 됨 autoincrement는 자동으로 시퀀스를 생성해 줌

Trouble Shooting

Ref

/volume1/web/dokuwiki/data/attic/wiki/database/mariadb.1600072299.txt.gz · 마지막으로 수정됨: 2022/03/10 19:52 (바깥 편집)