DB/MySQL 22

[MariaDB/MySQL] 1월 30일의 1개월 후는 어떻게 계산할까?

만료기간 관련된 작업을 하던 중에 올해 윤달도 있고 해서, 1월 30일의 1달 후는 몇일일지 궁금해졌습니다. 그래서 다음과 같은 쿼리를 작성하여 실행해 보았습니다. \ MariaDB [(none)]> SELECT DATE_ADD('2020-01-30', INTERVAL 30 DAY), DATE_ADD('2020-01-31', INTERVAL 30 DAY), DATE_ADD('2020-01-30', INTERVAL 1 MONTH), DATE_ADD('2020-01-31', INTERVAL 1 MONTH); +-----------------------------------------+--------------------------------------..

DB/MySQL 2020.02.07

[MariaDB/MySQL] 저장 프로시저 DEFINER 일괄 변경하는 세 가지 방법

개요MariaDB를 이용하여 프로젝트를 진행하던 중에, 개발하던 DB를 그대로 실 운영서버로 백업하고 복구하여 사용하려고 하는데, 저장 프로시저의 DEFINER 때문에 호출 오류가 발생하였습니다.데이터베이스 오류 Error Number: 1449 The user specified as a definer ('root'@'172.16.112.%') does not exist CALL USP_get_common() 저장 프로시저를 백업 받아서 DEFINER를 변경한 후에, 다시 정의하면 해당 저장 프로시저는 바로 이용할 수 있었으나, 이전한 데이터베이스에 저장 프로시저가 100개가 넘는 터라 일일이 DEFINER를 바꾸어 주는 것은 너무 고된 작업이라 일괄로 한꺼번에 처리할 수 있는 방법은 없는지 알아보고, ..

DB/MySQL 2020.01.30

[MariaDB/MySQL] 서비스가 시작되자 마자 종료되는 문제

문제점 및 증상MariaDB의 데이터 폴더를 그대로 복사하여, 새로운 서버에서 구동하려고 했으나 다음과 같은 로그와 함께 MariaDB 서비스가 정상적으로 실행되지 않았습니다.systemctl start mariadb Job for mariadb.service failed because a timeout was exceeded. See "systemctl status mariadb.service" and "journalctl -xe" for details. systemctl status mariadb mariadb.service - MariaDB 10.3.12 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled;..

DB/MySQL 2020.01.17

MaraiDB의 Data 저장 폴더 변경하기

시험 환경 : CentOS 7.4 / MariaDB 10.3.12MaraiDB 데이터 폴더를 변경하기 위하여 서비스를 중지합니다.$ systemctl stop mysql 이동할 폴더를 생성하고, 다음과 같이 "rsync" 명령어를 이용하여 모든 데이터 파일을 복사합니다.$ mkdir -p /home/mariadb/mysql $ rsync -av /var/lib/mysql /home/mariadb/mysql "server.cnf" 파일에서 "datadir"에 변경된 데이터 폴더를 아래와 같이 설정합니다.$ vim /etc/my.cnf.d/server.cnf [mariadb] datadir=/home/mariadb/mysql 기본적으로 CentOS의 MaraiDB는 "/home", "/root" 등의 폴더에..

DB/MySQL 2019.09.07

MariaDB 서비스 포트 변경 (CentOS 7)

MaraiDB 서버의 서비스 포트를 변경하려면, 먼저 SELinux 활성화 여부를 확인합니다.$ sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31 위와 같이 "sestatus" 명령을 실행하였을 때, "SELinux status"가 "enabled"된 상태라..

DB/MySQL 2019.07.16

[MariaDB] NULL 허용 컬럼 사용시 고려할 점

NULL 허용 숫자 자료형 컬럼에 COUNT, AVG 등의 함수를 사용할 경우, 매우 주의를 기울여야 합니다. 다음과 같이 테이블을 생성하고, 자료를 입력한 후에, COUNT, AVG 함수를 이용하여 자료를 조회한 결과를 보면, 결과에 약간씩 차이가 있습니다.CREATE TABLE `ORDER_DEPT` ( `dept_no` INT NOT NULL COMMENT '부서 번호' , `order_count` INT NULL DEFAULT NULL COMMENT '주문 수량' , `status` CHAR(1) NULL DEFAULT NULL COMMENT '상태정보, C:완료, O:진행중' ) COMMENT='부서별 주문정보' COLLATE='utf8_general_ci' ENGINE=InnoDB; INSER..

DB/MySQL 2018.11.08

[MariaDB] VARBINARY 형 비밀번호 처리에 관하여

문제점 및 증상비밀번호 사용을 위하여 내장된 password() 함수를 이용하다가, 보안 강화를 위하여 sha2-256을 적용실제 비밀번호를 아무런 암호화 없이 HTTP를 통하여 주고 받기 보다는 클라이언트에서 비밀번호 자체를 sha2-256을 적용한 해쉬값을 전달하여 처리하는 방식으로 개선하는 도중에 클라이언트에서 받은 해쉬값을 MariaDB의 해쉬값과 비교하는 과정에서 비밀번호가 일치하지 않는 문제 발생사용자 테이블 CREATE TABLE `customer` ( `customer_seq` INT(11) NOT NULL AUTO_INCREMENT COMMENT '고객번호', `login_id` VARCHAR(200) NOT NULL COMMENT '아이디' COLLATE 'utf8_unicode_ci'..

DB/MySQL 2016.09.07

[MariaDB] BIT 형 컬럼을 PHP에서 올바로 표시하기

문제점 및 증상¶MariaDB에서 BIT 형 컬럼을 정의하고, PHP에서 이 자료를 받아서 JSON 형태로 출력하는 형태로 개발 CREATE TABLE `customer_group` ( `group_seq` INT(11) NOT NULL AUTO_INCREMENT COMMENT '그룹번호', `customer_seq` INT(11) NOT NULL COMMENT '고객번호', `group_name` VARCHAR(100) NOT NULL COMMENT '그룹_이름' COLLATE 'utf8_unicode_ci', `reg_date` DATETIME NOT NULL COMMENT '등록일시', `default_group` BIT(1) NOT NULL COMMENT '그룹 종류 : 0 - 일반 그룹, 1 -..

DB/MySQL 2016.09.06

[MariaDB] Commands out of sync 문제

문제점 및 증상Maria DB로 Stored Procedure를 호출하고, 다른 SELECT 문을 호출하였더니, "Commands out of sync; you can't run this command now" 오류가 발생함여러 가지 방법을 모두 사용하여도 동일한 결과만 나타남. 문제점 분석여러 가지 검색한 결과, 사용이 끝나지 않은 리소스 때문에 그런 것이라고는 나오는데, 리소스 사용을 끝내는 방법은 찾을 수 없었음 수정 내용최초 호출하는 저장 프로시저에서 INSERT를 여러 번 수행하고, 마지막으로 삽입된 테이블의 LAST_INSERT_ID() 값을 반환하는 형태였음mysql_fetch_row() 의 호출결과가 없을 때까지도 호출해 봤으나, 별 차이가 없었음당연히 저장 프로시저 내의 순서대로 PHP ..

DB/MySQL 2016.09.04

MySQL 관리

데이터베이스 생성mysql을 이용하는 방법 # mysql -u root -p mysql mysql> CREATE DATABASE TEST; mysql> \q mysqladmin을 이용하는 방법 # mysqladmin -u root -p create TESTmysqldump이용한 데이터베이스 백업, 복구 방법TEST DB 백업 # mysqldump -u root -p TEST > test-20100225.sqlTEST DB 복구 # mysqldump -u root -u TEST < test-20100225.sqlMysql root 암호 변경하기mysqladmin을 이용하는 방법 # ./mysqladmin -u root -p password 12345mysql의 set 명령어로 root 암호를 변경하는 방법..

DB/MySQL 2014.04.17
728x90