728x90
300x250
[MySQL(또는 MariaDB)] Debian 10에서 외부 접속 허용하기

 

1. 외부 접속 허용해주기

 

$ sudo vi /etc/mysql/my.cnf을 열어보면 bind-address = 127.0.0.1 라는 부분이 있다.
이 부분을 주석 처리 하고 아래처럼 해준다.

 

#bind-address            = 127.0.0.1
bind-address            = *

 

2. Maria DB(또는 MySQL)에서 네트워크 대역 허용해주기

 

모든 IP 대역 네트워크

INSERT INTO mysql.user (host,user,password) VALUES ('%','root',password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES; 


특정 IP 대역 네트워크

INSERT INTO mysql.user (host,user,password) VALUES ('192.168.0.%','root',password('패스워드'));
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%';
FLUSH PRIVILEGES;


3. 복구

 

모든 IP 대역 네트워크 복구하기

 

DELETE FROM mysql.user WHERE Host='%' AND User='root';
FLUSH PRIVILEGES;


특정 IP 대역 네트워크 복구하기

 

DELETE FROM mysql.user WHERE Host='192.168.0.%' AND User='root';
FLUSH PRIVILEGES;

 

 


[자주 나오는 오류]

 

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value
Mysql 버전이 높아지면서 보안관련 인한 오류입니다.

User 생성시 Host, User ,Password, ssl_cipher, x509_issuer, x509_subject 를 입력 해 주셔야 합니다.
ssl_cipher, x509_issuer, x509_subject 값은 '' 빈값을 입력하세요.

ex)
 insert into user (Host, User, Password, ssl_cipher, x509_issuer, x509_subject )
values('localhost','사용자명',password('비밀번호'),'','','');

 

ERROR 1364 (HY000): Field 'authentication_string' doesn't have a default value

* mysql 5.5 에서 user 생성시 authentication_string 필드 추가. '' 값으로 넣어 주세요.


ex)
insert into user (Host, User, Password, ssl_cipher, x509_issuer, x509_subject, authentication_string)

values('localhost','사용자명', password('비밀번호'),'','','','');

반응형
728x90
300x250
[MySQL] 날짜(Date) 그리고 날짜 연산(Operation)

 

MySQL 5.7에서 날짜 및 날짜 연산을 수행하는 방법에 대해서 소개한다.

 


1. 사용방법

 

1-1. Between

 

SELECT id, type, subject, money, taxRate, count, regidate FROM {게시판명} WHERE strDate BETWEEN '{시작일자}' AND '{종료일자}'

 

이 명령어를 사용하면, 시작일자부터 종료일자까지의 데이터를 출력할 수 있다.

 


1-2. 일자 연산(DATE_ADD() Function)


이 명령어를 사용하면, 일자의 증가, 감소 등을 구현할 수 있다.

 


1-2-1. 일자 증가

 

SELECT DATE_ADD( "2018-08-01", INTERVAL 31 DAY )

 

 

그림 1-2-1-1. 출력결과, 도도(Dodo)

 


1-2-2. 일자 감소

 

SELECT DATE_ADD( "2018-08-01", INTERVAL -31 DAY )

 

 

그림 1-2-2-1. 출력결과, 도도(Dodo)

 


1-2-3. 일자 (DATE_ADD 연산자)의 종류

 

unit

Value

Expected expr Format

MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTES:SECONDS.MICROSECONDS'
MINUTE_SECOND 'MINUTES:SECONDS'
HOUR_MICROSECOND 'HOURS:MINUTES:SECONDS.MICROSECONDS'
HOUR_SECOND 'HOURS:MINUTES:SECONDS'
HOUR_MINUTE 'HOURS:MINUTES'
DAY_MICROSECOND 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE 'DAYS HOURS:MINUTES'
DAY_HOUR 'DAYS HOURS'
YEAR_MONTH 'YEARS-MONTHS'

 


2. 참고자료(Reference)

 

1. 12.7 Date and Time Functions, MySQL, https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add, Accessed by 2018-08-01

반응형
728x90
300x250

[MySQL] SQL을 활용한 "열 - 단위 환산 출력하기"

이번에 소개할 내용은 열에 정량적 측정에 대해서 컴퓨터 프로그래밍으로 해결하는 방법에 대해서 소개하겠다.
순수한 실험을 위한 화학은 아니고, 컴퓨터 프로그래밍 측면에서 비열의 측정 데이터를 처리하는 방법에 대한 것이다.

 소프트웨어

 스프레드시트(데이터베이스를 모를 경우 파일처리로 데이터베이스로 활용가능),
 프로그래밍 언어 1개(자바, C언어, C++ 프로그래밍, VBA 등의 언어),
 데이터베이스(1개: MySQL, Cubrid, MSSQL, Oracle)



1. 컴퓨터 프로그램으로 해석

크게 어려운 건 아니다. 몇 가지 식을 소개하겠다.

소개

 1cal/g℃ = 4.184J/g℃.

(cal에서 J로 환산)

 1cal/g℃ = 4.184J/g℃ x 1000g / 1kg = 4184J/kg℃

(g에서 kg으로 환산)

 

그림 1-1. 물질 관련 표, 도도(Dodo)

공기, 건조를 한글로 소리나는 데로 읽는다면, "에어, 드라이(시어 레벨)" 이렇게 읽어진다.
아무튼 이러한 물질에 관한 데이터 표가 있다.

그림 1-2. 단위 변환 - 스프레드시트에 적용해보기, 도도(Dodo)

그림 1-2는 실제 실험이 완료된 수치를 단위변환한 것이다.
문제점이 하나 발생한다.

수치를 범위로 표현한 것이다.

그림 1-3. 수치를 범위로 표현한 경우, 도도(Dodo)

이런 경우에는 수치 데이터표를 보완할 필요가 있다.
컴퓨터 프로그래밍으로 자료를 처리하기 좋은 쪽으로 작성하는 게 편리하다.

그림 1-4. Min, Max로 데이터의 범주를 규격화 시킨 경우, 도도(Dodo)

그림 1-4는 Min, Max의 형태로 데이터를 규격화 시켰다.
J/kg℃는 제거해도 무방하다.

논리적인 데이터로 데이터만 뽑아내면 되기 때문이다.

그림 1-5. Water에 관한 세부 속성, 도도(Dodo)

이러한 경우도 있을 수 있다.
물인데 수증기에 관한 것이 있고, 순수한 물이 있다.

[첨부(Attachment)]
Material_Substance.7z



2. MySQL로 구현하기

이번에 소개할 것은 컴퓨터 프로그래밍을 최대한 제거하였다.
APMSetup이라는 프로그램 또는 Apache 2, PHP 5.2, MySQL 5.077를 활용한 Joule 계산 실습을 진행하였다.

SQL 언어 정도만 이해하고 있으면 간단하게 해결할 수 있는 주제로 작성하였다.

 

 

번호

항목명

설명(Description)

1

Apache 2.2

오픈소스 - 웹서버

2

PHP 5.2

오픈소스 - 프로그래밍 언어

3

MySQL 5.077

오픈소스 - MySQL 5.077 Community Edition

4

phpMyAdmin

SQL 언어 실습 프로그램 (오픈소스)

참고할 점: APMSetup 6 Version으로 진행하였음. / 설치를 안 할 경우에는 localhost에 접속할 수 없다.

그림 2-1. APMSetup의 localhost 웹 사이트

"
myadmin"을 클릭한다.

그림 2-2. phpMyAdmin, 도도(Dodo)

계정에 아이디는 root, 비밀번호는 apmsetup이다.
입력한다.

그림 2-3. 사용권한에서 계정 생성하기, 도도(Dodo)

그림 2-3은 사용권한을 클릭하여 신규 계정을 생성한 것이다.
예로 편한 계정명을 입력하도록 하자.

그림 2-4. 데이터베이스 생성하기, 도도(Dodo)

그림 2-4는 데이터베이스를 생성하는 것이다.
dodo라는 데이터베이스를 생성할 것이다.

그림 2-5. 데이터베이스에 사용자 권한 주기, 도도(Dodo)

데이터베이스에 간단한 사용자 권한을 주었다.

그림 2-6. Material_substance.xlsx 파일 -> DB에 넣기, 도도(Dodo)

Material_substance에서 설계한 DB구조를 phpMyAdmin으로 생성하는 장면이다.

그림 2-7. Material_substance DB 구조 설계, 도도(Dodo)

항목명

특징(Specific)

비고(Remarks)

id

Primary Key, Auto Increment(자동 증분)

 

substance

 

// 물질명 

kor-substance

 

 // 한글명

min

 

 최소값

max

 

최대값

 

그림 2-8. Material_substance DB 구조 설계, 도도(Dodo)

CREATE TABLE `substance` {
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY_KEY ,
    `substance` VARCHAR ( 40 ) NOT NULL ,
    `kor-substance` VARCHAR ( 40 ) NOT NULL ,
    `min` DOUBLE NOT NULL ,
    `max` DOUBLE NOT NULL
} ENGINE = MYISAM ;

[첨부(Attachment)]
substance.7z

그림 2-9. 데이터 가져오기, 도도(Dodo)

insert into `dodo`.`substance` (`id`, `substance`, `kor-substance`, `min`, `max`) values(NULL, 'Acetals', '아세탈', '0.35','0.35');

이런 형태로 데이터를 가져왔다.

[첨부(Attachment)]
sample_insert.7z


그림 2-10. SQL 명령어를 활용한 J(Joule) 구하기, 도도(Dodo)

SQL 명령어를 활용하여 J(주울)을 구했다.

SELECT `id`, `substance`, `kor-substance`, `min`, `max`, `min` * 4.184 AS `Joul/g`, `min` * 4.184 * 1000 AS `Joul/kg` FROM substance

간단한 명령어를 통해서 J/g, J/kg의 형태를 구할 수 있었다.

그림 2-11. SQL 명령어를 활용한 J(Joule) 삭제하기, 도도(Dodo)

간단한 명령어로 줄(J)을 삭제할 수 있다.
그림 2-12는 삭제한 결과가 성공적으로 수행되었음을 알려주는 모습이다.

DELETE FROM `dodo`.`substance` WHERE `substance`.`id` =3 LIMIT 1 ;

그림 2-12. id 3번의 줄 삭제 모습, 도도(Dodo)

다음은 입력한 Joule 데이터를 수정하는 방법에 대해서 소개하겠다.
그림 2-12에서 수정할 대상에 대해서 "연필" 그림을 클릭한다.

그림 2-13. id 4번의 줄 수정 모습, 도도(Dodo)

수정할 데이터를 입력한다.
실행을 누르면 아래의 그림처럼 된다.

그림 2-14. id 4번의 줄 수정 완료, 도도(Dodo)

실제로는 그림을 눌러서 처리되는 것은 아니며, SQL이라는 명령어로 처리된다.

UPDATE `dodo`.`substance` SET `kor-substance` = '공기, 건조 (해수면) 수정' WHERE `substance`.`id` =4 LIMIT 1 ;

테이블을 삭제하는 방법에 대해서 소개하겠다.
구조를 클릭한다.
substance을 선택하고, 삭제를 누른다.

그림 2-15. SQL DROP 명령어 실행하기, 도도(Dodo)

아래의 그림이 출력되면, 삭제 관련 사항을 확인하고 예를 누른다.
참고로 테이블을 삭제하면, 복원이 되지 않는다.

그림 2-16. SQL DROP 명령어 실행하기, 도도(Dodo)

그림 2-17. SQL 질의 성공 (DROP), 도도(Dodo)

Drop 사용 방법은 아래와 같다.

DROP TABLE {테이블명};


3. 참고자료(Reference)

[1] Specific Heat of common Substances, https://www.engineeringtoolbox.com/specific-heat-capacity-d_391.html, Accessed by 2018-07-29
[2] Water Vapor - Specific Heat, https://www.engineeringtoolbox.com/water-vapor-d_979.html, Accessed by 2018-07-29
[3] How to convert calories to joules[J], https://www.rapidtables.com/convert/energy/how-cal-to-joule.html, Accessed by 2018-07-29
[4] Files, https://kldp.net/apmsetup/release/, Accessed by 2018-07-29
[5] Developing MySQL Applications with Eclipse CDT, MySQL, http://download.nust.na/pub6/mysql/tech-resources/articles/mysql-capi-tutorial.html, Accessed by 2018-07-29

반응형
728x90
300x250

[MySQL] 특정 범위 데이터 조회 & 응용 - 게시판 페이징 구현

 

기초적인 방법으로 특정 범위 데이터를 조회할 수 있습니다.

 

SELECT * FROM mental.ck_counsel where idx >= 1 and idx <= 5;

 

응용) 게시판 페이징 구현

 

게시판 페이징 로직은 아래와 같이 생각해볼 수 있습니다.

 

설계 후, 게시판 페이징을 구현하면 됩니다.

반응형
728x90
300x250

MySQL 문자열 함수

1. Char_Length(string)
문자열의 길이를 알아봅니다. 2Byte문자는 1개로 취급합니다.
mysql> SELECT CHAR_LENGTH("안녕하세요");
+---------------------------+
| CHAR_LENGTH("안녕하세요")  |
+---------------------------+
|                         5 |
+---------------------------+
1 row in set (0.03 sec)

2. LENGTH(string)
문자열의 Byte수를 알아봅니다.
mysql> SELECT LENGTH("안녕하세요");
+----------------------+
| LENGTH("안녕하세요")  |
+----------------------+
|                   10 |
+----------------------+
1 row in set (0.00 sec)


3. CONCAT(string1, string2,...)
문자열을 합칩니다.
mysql> SELECT CONCAT("안녕", "하세요");
+--------------------------+
| CONCAT("안녕", "하세요")  |
+--------------------------+
| 안녕하세요                |
+--------------------------+
1 row in set (0.03 sec)


4. CONCAT_WS ("구분자", string1, string2,...)
문자열을 특정 구분자를 포함시켜 합쳐줍니다.
mysql> SELECT CONCAT_WS(',', "안녕", NULL, "하세요");
+----------------------------------------+
| CONCAT_WS(',', "안녕", NULL, "하세요")  |
+----------------------------------------+
| 안녕,하세요                             |
+----------------------------------------+
1 row in set (0.00 sec)


5. FORMAT(number, round)
숫자의 천단위 구분자를 넣어줍니다. round 는 소수점 뒷자리 절사 길이 입니다.
mysql> SELECT FORMAT(123456, 0);
+-------------------+
| FORMAT(123456, 0) |
+-------------------+
| 123,456           |
+-------------------+
1 row in set (0.00 sec)


6. REPLACE(string, from_string, to_string)
문자열을 치환합니다.
mysql> SELECT REPLACE("우리나라 나쁜나라", "나쁜", "좋은");
+----------------------------------------------+
| REPLACE("우리나라 나쁜나라", "나쁜", "좋은")    |
+----------------------------------------------+
| 우리나라 좋은나라                              |
+----------------------------------------------+
1 row in set (0.02 sec)


출처 : http://www.lovelgw.com/Blog/257

반응형

+ Recent posts