Tag Archives: Mysql

Error: MySQL 5.7 이상 Group by – this is incompatible with sql_mode=only_full_group_by

MySQL 5.7이상에서 Group By 쿼리 사용시 발생하는 오류

 

Solution.1)
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Solution.2)
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
SELECT name, ANY_VALUE(address), MAX(age) FROM t GROUP BY name;

ANY_VALUE라고 싸줌.

MySql 백업Backup & 복구|복원Restore

백업의 대상

  1. 데이터베이스 파일
  2. 오류 로그 파일, 슬로쿼리 로그 파일
  3. 바이너리 로그 파일
  4. 설정파일 my.cnf
  5. 실행 파일
  6. 기타 공유 라이브러리, 지원 스크립트, 테스트 툴

 

콜드 백업

바이너리 로그 이용

온라인 백업 mysqldump

새로운 백업후 바이너리로그 삭제

 

기타 백업

lvm스냅샷

innodb의 경우 Xtrabackup

 

Mysql settings for Remote Accessing

mysql -u root
mysql> SET PASSWORD FOR 'ROOT'@'LOCALHOST"
> = PASSWORD('new_password');

Now while we’re still here, we’ll create a new HOST for root and allow root to login from anywhere.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
> IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit

 

MySQL Create Database and Create User

데이터베이스 생성과 사용자 생성

새 사용자로 접속해서 계정 확인해보기

인서트를 이용해서 사용자 무식하게 추가

하는 방법은 다른 블로그 링크.. 검색해도 많이 나오고.. 비추방법이다.

http://blog.naver.com/PostView.nhn?blogId=blash100&logNo=70041229042&parentCategoryNo=4&viewDate=&currentPage=1&listtype=0&from=postList

http://www.waitfor.com/phpBB3/viewtopic.php?f=57&t=134

 

 

MySql view current open connections 열린 커넥션 확인하기

다음 명령어로 서버에 접속use this command to connect mysql server
mysql -u {accountname} -p {password} -h {hostname}

이렇게 입력해서 몇번 해보면 뭐가뭔지 다 알 수 있겠지just type it

좋은자료 올려주신 양키분들께 감사thanks..

MySQL License 사용권한 문서

1.   GPL 듀얼 라이선스 정책

무료사용시에는 GPL 정책을 따르며 제품을 구매하면 구매한 라이선스에 따라 자유롭게 이용이 가능합니다.

①    MySQL Commercial License

상용 라이센스는 사용자 어플리케이션의 소스 코드가 공개되는 것을 원하지 않는 조직과 Oracle Corporation 사이의 계약입니다. 상용 라이센스를 가진 사용자는 그에 상응하는 서비스를 보증받습니다. 또한 상용 라이센스를 가진 사용자가 어플리케이션을 오픈소스로 만드는 데에는 아무런 제약이 없습니다. 사용자의 어플리케이션이 무료 소프트웨어로 등록된 GPL에 상응하는 무료 소프트웨어 라이센스가 아니거나, OSI호환이 아닌 경우에 MySQL을 배포하고자 한다면, 먼저 MySQL 제품에 대한 상용 라이센스를 획득해야 합니다.

MySQL을 배포하는 대표적인 예는 다음을 포함합니다.

MySQL을 포함하고 있는 소프트웨어를 고객에게 팔아 그 소프트웨어를 고객이 소유한 장비에 설치하는 경우

고객이 소유한 장비에 기본적으로 MySQL을 설치해야하는 소프트웨어를 파는 경우

MySQL을 포함하고 있는 하드웨어 시스템을 고객에게 팔아서 고객이 있는 곳에 설치하는 경우

상용 라이센스는 사용자 어플리케이션의 소스 코드가 공개되는 것을 원하지 않는 조직과 Oracle Corporation 사이의 계약입니다. 상용 라이센스를 가진 사용자는 그에 상응하는 서비스를 보증받습니다. 또한 상용 라이센스를 가진 사용자가 어플리케이션을 오픈소스로 만드는 데에는 아무런 제약이 없습니다

 

②    비영리 교육기관 개인적인 사용

만일 사용자가 비영리 단체나 교육기관에 속해 있다면, 사용자의 어플리케이션이 오픈소스/GPL 라이센스를 사용하는 무료 소프트웨어 프로젝트임을 공개할 것을 권장합니다.
그렇게하면 GPL라이센스에 의해 MySQL 소프트웨어를 무료로 자유롭게 사용할 수 있습니다.
만일 사용자가 GPL 등록을 하지 않을 중요한 이유가 있다면, 상용 라이센스를 구입해야 합니다.
비영리 기관이 개방적으로 보증되는 상용 라이센스를 자유롭게 선택할 수 있다는 것을 유념하십시오.

만일 사용자가 개인적으로 자신의 어플리케이션 용으로 MySQL 소프트웨어를 사용한다면, 그것을 배포하지 않는 한 무료입니다. 만약 그것을 배포한다면, 상용 라이센스나 GPL중 양자 택일하여야 합니다.

사용자가 자신의 어플리케이션을 무료 데모 버전으로 배포하는 경우에도 위의 규칙이 그대로 적용된다는 것을 인지하십시오.

 

 

2.  Community 버전을 상용으로 사용할 경우

 

①    GPL라이선스를 가진 소프트웨어를 개작하거나 새로운 프로그램에 포함시킨 경우의 상업적 배포 방법

  1. 개작한 프로그램을 상업적으로 판매하는 것은 가능합니다.
  2. 단, 이 경우 개작된 소프트웨어의 소스코드를 GNU GPL에 따라 공개해야하고 제3자가 이 소스코드를 GPL라이선스하에 새로운 프로그램을 만들고 재배포하는 것이 허용되어야 합니다.
  3. http://www.gnu.org/licenses/gpl-faq.ko.html#TOCLinkingWithGPL

②    GPL소스가 포함된 실행파일을 프로그램 내에서 exec, fork등을 이용해 실행하는 경우

  1. 이 경우에는 plug-in형태로 보아서, 내가 만든 것은 GPL을 적용하지 않아도 됩니다.
  2. http://www.gnu.org/licenses/gpl-faq.ko.html#GPLAndPlugins
  3. 링킹해서 사용하는 경우는 프로그램이 같은 메모리를 사용하는 것이고, exec와 fork의 경우에는 서로 다른 메모리 영역에 사용되는 것입니다.
  4. 파이프와 소켓, 명령행 인자 등은 두개의 독립된 프로그램간의 통신을 위해서 사용되는 매커니즘으로 모듈들이 이러한 형식을 사용한다면 모듈들은 독립적인 프로그램으로 볼 수 있습니다.

③    GPL은 영어 전문만을 인정하고 다양한 해석과 편법이 있을 수 있습니다. GPL 라이선스는 번역을 허용하지 않고 영어 전문만을 법적으로 인정하기 때문에 세부적인 파악을 위해서는 링크된 전문을 참고하시기 바랍니다.

  1. GNU General Public License (version 2) or proprietary EULA
    http://en.wikipedia.org/wiki/GNU_General_Public_License
  2. http://www.gnu.org/licenses/gpl.html
  3. MySQL 규정 : http://www.mysql.com/about/legal/

 

 

3.  MySQL 상용 라이선스 구입 정보

①    가격정보

  1. CPU소켓 개수당으로 가격이 책정된다

https://shop.oracle.com/pls/ostore/f?p=dstore:2:2102507919736081::NO:RIR,RP,2:PROD_HIER_ID:58095029061520477171389

Product Type Price
MySQL Cluster Carrier Grade Edition Subscription (1-4 socket server)The industry’s leading real-time, highly available database combining the flexibility of a relational database. Support ₩934,375 – ₩33,637,500

세부정보보기

MySQL Cluster Carrier Grade Edition Subscription (5+ socket server)The industry’s leading real-time, highly available database combining the flexibility of a relational database. Support ₩1,868,750 – ₩67,275,000

세부정보보기

MySQL Enterprise Edition Subscription (1-4 socket server)Most comprehensive set of MySQL production, backup, monitoring, modeling, development, administration tools, and support. Support ₩467,188 – ₩16,818,768

세부정보보기

MySQL Enterprise Edition Subscription (5+ socket server)Most comprehensive set of MySQL production, backup, monitoring, modeling, development, administration tools, and support. Support ₩934,375 – ₩33,637,500

세부정보보기

MySQL Standard Edition Subscription (1-4 socket server)Enables the delivery of high-performance and scalable Online Transaction Processing (OLTP) applications. Support ₩186,875 – ₩6,727,500

세부정보보기

MySQL Standard Edition Subscription (5+ socket server)Enables the delivery of high-performance and scalable Online Transaction Processing (OLTP) applications. Support

 

4.  MySQL을 이용한 프로그램 오픈소스로 공개시 준수사항

①    GPL 규정에 따라 사용자들이 쉽게 소스코드를 다운받을 수 있도록 소스코드가 홈페이지나 공개 커뮤니티에 공개되어야 한다.

②    MySQL을 이용한 프로그램 개발시 GPL라이선스 예외상황

  1. GPL은 소프트웨어를 타인에게 배포할 때 발생한다. 해당 소프트웨어를 이용하여 서비스를 하는 경우(자체구축)에는 영향을 받지 않는다.
  2. PHP 웹 프로그램의 경우 소켓을 이용한 통신을 하기 때문에 GPL 규정으로부터 안전하다.
  3. MySQL컨넥터를 별도 모듈로 분리시킬 경우 소프트웨어의 본체는 GPL 규정에 영향을 받지 않는다. – MySQL과 함께 다른 DB를 사용 가능하도록 만든 프로그램을 배포하고 사용자가 MySQL을 선택하는 경우, GPL로부터 안전하다..
  4. 위의 예외상황은 언제든지 변경될 수 있으며 Oracle사의 정책에 따라 다르게 해석될 수 있습니다.

 

 

 

 

참고자료

MySQL KOREA 라이선스 설명 : http://www.mysqlkorea.co.kr/sub.html?mcode=product&scode=08

MySQL 라이선스 관련 QnA : http://teratec.co.kr/mysql/m_faq.htm

GNU GPL라이선스 규정 해설 : http://www.gnu.org/licenses/gpl-faq.ko.html

WIKI GNU라이선스 : GNU General Public License (version 2) or proprietary EULA
http://en.wikipedia.org/wiki/GNU_General_Public_License

GNU라이선스 : http://www.gnu.org/licenses/gpl.html

MySQL 규정 : http://www.mysql.com/about/legal/

 

MySQL 데이터 용량확인 – 테이블, 데이터베이스

테이블 용량확인

데이터베이스 용량확인

 

어디서 퍼왔는지는 까먹음

MysqlData 백업 및 복원 방법

1. 파일백업
우분투의 경우 기본 디렉토리
/var/lib/mysql/*
하위경로의 파일을 모두 백업해놓으면 된다.
새로 설치후 이 파일들을 복원하면 DB복원완료
(접속이 안된다면 그건 권한이겠지)

2. mysqldump
데이터베이스 모두 덤프(백업)
mysqldump -u root -p ‘password’ –all-databases > 파일명.sql
특정 데이터베이스 덤프(백업)
mysqldump -u root -p ‘password’ test > 파일명.sql
테이블 덤프(백업)
mysqldump -u root -p ‘password’ test tbl_data > 파일명.sql
테이블 스키마 덤프(백업)
mysqldump -u root -p ‘password’ –no-data test tbl_data > 파일명.sql
mysqldump -u 계정명 -p 비밀번호 –no-data 디비명 테이블명 > 파일명.sql
테이블 스키마 제외 파일만 덤프
mysqldump -u root -p –no-create 디비명 [테이블명] > 파일명.sql

테이블명은 빼면 디비를 통째로 하겠지…. 아마도
비밀번호는 스크립트에 안쓰면 따로 쓰라고 뜬다.

3. 복구방법
덤프파일이용 복구
mysql- u root -p test > test.sql 이거안댐
mysql -u “root” -p “test” < ./test.sql

mysql date query 날짜 더하기빼기

SELECT DATE_SUB(NOW(), INTERVAL 30 day);

SELECT TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 day));

SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 day));

 

MySQL뿐만 아니라 쿼리문에서 날짜를 더하고 빼야하는 일이 많다 이럴때 쓰는 쿼리.

 

http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html :

SELECT DAY(your_date_field) AS dtDay, MONTH(your_date_field) AS dtMonth, YEAR(your_date_field) AS dtYear FROM your_table

일,월,년 구하는 쿼리

Python Mysql 한글깨짐 인코딩 문제 해결.

 

 

기타 인코딩 방법에

import codes

unicode(‘encoding target string’, ‘utf-8’).encode(‘euc-kr’)

과 같이 하는 방법도 있다.

이것은 텍스트를 인코딩 하는 방법으로 타겟 db와의 연동시에는 별도의 과정이 들어가는 것 같아. 그래서 위으 박스와 같은 과정을 거쳐야한다.

 

end.