MySQL

**MySQL**(마이에스큐엘, )은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. 그 이름은 공동 창립자인 미카엘 비데니우스의 딸 이름인 "My"와, SQL(Structured Query Language)의 약자를 합친 것이다. 관계형 데이터베이스는 데이터를 하나 이상의 데이터 테이블로 정리하며, 여기서 데이터는 서로 연관될 수 있다. 이러한 관계는 데이터의 구조화를 돕는다. SQL은 프로그래머가 관계형 데이터베이스에서 데이터를 생성, 수정 및 추출하고 데이터베이스에 대한 사용자 접근을 제어하기 위해 사용하는 언어이다. 관계형 데이터베이스와 SQL 외에도 MySQL과 같은 RDBMS는 운영체제와 함께 작동하여 컴퓨터 저장 시스템에 관계형 데이터베이스를 구현하고, 사용자를 관리하며, 네트워크 접근을 허용하고, 데이터베이스 무결성 테스트 및 백업 생성을 용이하게 한다.

MySQL은 GNU 일반 공중 사용 허가서의 조건에 따른 자유-오픈 소스 소프트웨어이며, 다양한 사유 소프트웨어 라이선스로도 이용 가능하다. MySQL은 스웨덴 회사인 MySQL AB가 소유하고 후원했으나, 이 회사는 썬 마이크로시스템즈(현재의 오라클 (기업))에 인수되었다. 2010년 오라클이 썬을 인수했을 때, 비데니우스는 MariaDB를 만들기 위해 오픈 소스 MySQL 프로젝트를 포크했다.

MySQL은 사용자가 SQL을 사용하여 MySQL 데이터베이스와 직접 상호작용할 수 있게 해주는 독립형 클라이언트를 가지고 있지만, 관계형 데이터베이스 기능이 필요한 애플리케이션을 구현하기 위해 다른 프로그램과 함께 사용되는 경우가 더 많다. MySQL은 리눅스, 아파치, MySQL, 펄/PHP/파이썬의 약자인 LAMP 웹 애플리케이션 소프트웨어 스택(및 기타)의 구성 요소이다. MySQL은 드루팔, 줌라, PhpBB, 워드프레스를 포함한 많은 데이터베이스 기반 웹 애플리케이션에서 사용된다. MySQL은 또한 페이스북, 플리커, 미디어위키, 트위터, 및 유튜브를 포함한 많은 인기 웹사이트에서 사용된다.

## 개요
MySQL은 C와 C++로 작성되었다. SQL 파서는 Yacc으로 작성되었지만, 자체적으로 제작한 어휘 분석기를 사용한다. MySQL은 AIX, BSDi, FreeBSD, HP-UX, ArcaOS, eComStation, IBM i, IRIX, 리눅스, macOS, 마이크로소프트 윈도우, NetBSD, 노벨 넷웨어, OpenBSD, 오픈솔라리스, OS/2 Warp, QNX, 오라클 솔라리스, 심비안, 썬OS, SCO 오픈서버, SCO 유닉스웨어, Sanos 및 Tru64 UNIX를 포함한 많은 시스템 플랫폼에서 작동한다. OpenVMS용 MySQL 포트도 존재한다.

MySQL 서버 소프트웨어 자체와 클라이언트 라이브러리는 이중 라이선스 방식을 사용한다. GPL 버전 2 또는 상용 라이선스로 제공된다.

지원은 공식 매뉴얼에서 얻을 수 있다. 또한 다양한 IRC 채널과 포럼에서 무료 지원을 받을 수 있다. 오라클은 MySQL 엔터프라이즈 제품을 통해 유료 지원을 제공하며, 이는 서비스 범위와 가격에 따라 차이가 있다. 또한 지원 및 서비스를 제공하는 다수의 제3자 조직이 존재한다.

MySQL은 긍정적인 평가를 받아왔으며, 리뷰어들은 "평균적인 사례에서 매우 우수한 성능을 발휘한다"는 점과 "개발자 인터페이스가 잘 갖춰져 있고, 웹사이트 등을 통한 실제 피드백뿐만 아니라 문서화가 매우 훌륭하다"는 점에 주목했다. 또한 "빠르고 안정적이며 진정한 멀티 사용자, 멀티 스레드 SQL 데이터베이스 서버"인 것으로 테스트되었다.

## 역사

MySQL은 스웨덴인 데이비드 악스마르크와 알란 라르손, 그리고 핀인 미카엘 "몬티" 비데니우스가 설립한 스웨덴 회사 MySQL AB에 의해 만들어졌다.
비데니우스와 악스마르크에 의한 MySQL의 초기 개발은 1994년에 시작되었다. MySQL의 첫 번째 버전은 1995년 5월 23일에 등장했다. 처음에는 개발자들이 너무 느리고 유연하지 못하다고 생각한 저수준 언어 ISAM 기반의 mSQL을 대체하여 개인적인 용도로 만들어졌다. 그들은 mSQL과 동일한 API를 유지하면서 새로운 SQL 인터페이스를 만들었다. API를 mSQL 시스템과 일관되게 유지함으로써, 많은 개발자가 (사유 라이선스인) mSQL 대신 MySQL을 사용할 수 있었다.

### 주요 이정표
MySQL 개발의 추가적인 이정표는 다음과 같다:
* 1995년 5월 23일: 첫 내부 릴리스
* 버전 3.19: 1996년 말, www.tcx.se에서 공개
* 버전 3.20: 1997년 1월
* 윈도우 버전이 1998년 1월 8일 윈도우 95 및 NT용으로 출시
* 버전 3.21: 1998년 프로덕션 릴리스, www.mysql.com에서 공개
* 버전 3.22: 1998년부터 알파, 베타 버전 공개
* 버전 3.23: 2000년 6월 베타, 2001년 1월 22일 프로덕션 릴리스
* 버전 4.0: 2002년 8월 베타, 2003년 3월 프로덕션 릴리스 (union 지원).
* 버전 4.1: 2004년 6월 베타, 2004년 10월 프로덕션 릴리스 (R 트리 및 B 트리, 서브쿼리, 준비된 문 지원).
* 버전 5.0: 2005년 3월 베타, 2005년 10월 프로덕션 릴리스 (커서, 저장 프로시저, 트리거, 뷰, XA 트랜잭션 지원).
** 페더레이티드 저장 엔진 개발자는 "페더레이티드 저장 엔진은 개념 증명용 저장 엔진"이라고 밝혔으나, MySQL 버전 5.0의 주요 배포판에는 이것이 포함되었고 기본적으로 활성화되었다. 몇 가지 단점에 대한 문서는 "MySQL Federated Tables: The Missing Manual"에 나와 있다.
* 썬 마이크로시스템즈가 2008년 MySQL AB를 인수했다.
* 버전 5.1: 2008년 11월 27일 프로덕션 릴리스 (이벤트 스케줄러, 파티셔닝, 플러그인 API, 행 기반 복제, 서버 로그 테이블)
** 버전 5.1에는 버전 5.0에 존재하던 35개의 버그 외에도 20개의 알려진 충돌 및 잘못된 결과 버그가 포함되어 있었다(릴리스 5.1.51 기준으로 거의 모두 수정됨).
** MySQL 5.1 및 6.0-알파는 데이터 웨어하우징에 사용될 때 저조한 성능을 보였는데, 이는 부분적으로 단일 쿼리 처리를 위해 여러 CPU 코어를 활용하지 못하기 때문이었다.
* 오라클이 2010년 1월 27일 썬 마이크로시스템즈를 인수했다.
* 오라클이 썬 인수를 발표한 날, 미카엘 "몬티" 비데니우스는 MySQL을 포크하여 MariaDB를 출범시키고 다수의 MySQL 개발자를 데려갔다.
섬네일|right|게이르 허이달스비크(Geir Høydalsvik), 2018년 당시 오라클의 MySQL 시니어 소프트웨어 개발 이사
* MySQL 서버 5.5가 정식 출시되었다(). 개선 사항 및 기능은 다음과 같다:
** 기본 저장 엔진은 트랜잭션과 참조 무결성 제약 조건을 지원하는 InnoDB이다.
** 개선된 InnoDB I/O 하위 시스템
** 개선된 SMP 지원
** 준동기 복제.
** SQL 표준을 준수하는 SIGNAL 및 RESIGNAL 문.
** 보충 유니코드 문자 집합 utf16, utf32 및 utf8mb4 지원.
** 사용자 정의 파티셔닝을 위한 새로운 옵션.
* MySQL 서버 6.0.11-알파가 2009년 5월 22일 6.0 라인의 마지막 릴리스로 발표되었다. 향후 MySQL 서버 개발은 새로운 릴리스 모델을 사용하며, 6.0용으로 개발된 기능들은 향후 릴리스에 통합되고 있다.
* MySQL 5.6의 정식 출시가 2013년 2월에 발표되었다. 새로운 기능에는 쿼리 최적화 도구의 성능 향상, InnoDB의 트랜잭션 처리량 증가, 새로운 NoSQL 스타일 memcached API, 대규모 테이블 쿼리 및 관리를 위한 파티셔닝 개선, 밀리초를 정확하게 저장하는  열 유형, 복제 개선, 를 통해 사용 가능한 데이터 확장을 통한 성능 모니터링 개선 등이 포함되었다. InnoDB 저장 엔진에는 전체 텍스트 검색 지원 및 그룹 커밋 성능 개선도 포함되었다.
* MySQL 5.7의 정식 출시가 2015년 10월에 발표되었다. 2015년 8월 출시된 MySQL 5.7.8부터, MySQL은 RFC 7159에 정의된 기본 JSON 데이터 유형을 지원한다.
* MySQL 서버 8.0이 2018년 4월에 발표되었다. 여기에는 NoSQL 문서 저장소, 원자적 및 장애 안전 DDL 문, JSON 확장 구문, JSON 테이블 함수와 같은 새로운 기능, 개선된 정렬 및 부분 업데이트가 포함되어 있다. 이전의 MySQL 서버 8.0.0-dmr(마일스톤 릴리스)은 2016년 9월 12일에 발표되었다.
* MySQL은 DB-Engines ranking에서 2019년 올해의 DBMS로 선정되었다.

### 배포 이력

버전 6에 대한 작업은 썬 마이크로시스템즈 인수 이후 중단되었다. MySQL 클러스터 제품은 버전 7을 사용한다. 다음 주요 버전 번호로 버전 8로 건너뛰기로 결정되었다.

### 법적 분쟁 및 인수
2001년 6월 15일, NuSphere는 보스턴 미국 지방 법원에서 MySQL AB, TcX DataKonsult AB 및 원저자인 미카엘("몬티") 비데니우스와 데이비드 악스마르크를 "계약 위반, 제3자 계약 및 관계에 대한 불법적 간섭, 부정 경쟁" 혐의로 고소했다.

2002년, MySQL AB는 미국 메사추세츠 연방 지방 법원에 저작권 및 상표권 침해 혐의로 Progress NuSphere를 고소했다. NuSphere는 라이선스를 준수하지 않은 채 MySQL의 GPL 코드를 NuSphere Gemini 테이블과 연결하여 MySQL AB의 저작권을 위반했다는 혐의를 받았다. 2002년 2월 27일 파티 사리스 판사 앞에서 열린 예비 심리 이후, 양측은 화해 협상에 들어갔고 결국 합의했다. 심리 후 자유 소프트웨어 재단(FSF)은 "사리스 판사는 GNU GPL을 집행 가능하고 구속력 있는 라이선스로 간주한다는 점을 분명히 했다"고 언급했다.

2005년 10월, 오라클은 MySQL이 트랜잭션 및 외래 키와 같은 기능을 제공할 수 있게 해주는 제3자 InnoDB 저장 엔진을 개발한 핀란드 회사 Innobase OY를 인수했다. 인수 후 오라클은 보도자료를 통해 해당 회사의 소프트웨어를 MySQL AB에서 사용할 수 있게 하는 계약이 2006년경 갱신(및 재협상)될 예정이라고 언급했다. 2006년 4월 MySQL 사용자 컨퍼런스 기간 동안, MySQL AB는 MySQL AB와 Innobase OY가 라이선스 계약의 "다년" 연장에 합의했음을 확인하는 보도자료를 발표했다.

2006년 2월, 오라클은 다른 MySQL 저장 엔진의 기반이 되는 버클리 DB 제작사인 Sleepycat Software를 인수했다. 버클리 DB는 널리 사용되지 않았고, 2006년 10월 출시된 MySQL 5.1의 시험판인 5.1.12에서 (사용 부족으로 인해) 제외되었기 때문에 이는 거의 영향을 미치지 않았다.

2008년 1월, 썬 마이크로시스템즈는 MySQL AB를 10억 달러에 인수했다.

2009년 4월, 오라클은 당시 MySQL의 저작권과 상표권을 소유하고 있던 썬 마이크로시스템즈를 인수하기로 합의했다. 썬의 이사회는 만장일치로 거래를 승인했다. 또한 썬의 주주들과 미국 정부도 2009년 8월 20일에 이를 승인했다. 2009년 12월 14일, 오라클은 지난 4년 동안 해왔던 것처럼 MySQL을 계속 개선하겠다고 약속했다.

오라클로부터 MySQL을 보호하자는 "Save MySQL" 운동은 MySQL AB 창립자 중 한 명인 몬티 비데니우스에 의해 시작되었다. 5만 명 이상의 개발자와 사용자의 서명은 유럽 연합 집행위원회에 인수를 차단할 것을 촉구했다. 동시에 일부 자유 소프트웨어 오피니언 리더(Groklaw의 파멜라 존스, 얀 윌데보어, 합병 규제 절차에서 공동 대리인으로 활동한 카를로 피아나 포함)는 합병의 무조건적인 승인을 옹호했다. 유럽 연합 집행위원회와의 협상의 일환으로 오라클은 MySQL 서버가 최소 2015년까지 MySQL AB가 오랫동안 사용해 온 이중 라이선스 전략을 계속 사용하여 상용 버전과 GPL 버전을 모두 제공할 것이라고 약속했다. EU의 반독점 기구는 "합병 승인 조건으로 MySQL을 매각하도록 압박"해 왔다. 그러나 오라클의 요청에 따라 미국 법무부는 EU가 합병을 무조건 승인하도록 압력을 가했다. 유럽 연합 집행위원회는 결국 2010년 1월 21일 오라클의 MySQL AB 인수를 무조건 승인했다.

2010년 1월, 오라클의 MySQL AB 인수가 완료되기 전, 몬티 비데니우스는 GPL 전용 포크인 MariaDB를 시작했다. MariaDB는 MySQL 서버 5.5와 동일한 코드 기반을 바탕으로 하며, 오라클 제공 버전과의 호환성 유지를 목표로 한다.

## 기능
MySQL은 두 가지 다른 에디션으로 제공된다. 오픈 소스 소프트웨어인 MySQL 커뮤니티 서버와 상용인 엔터프라이즈 서버가 그것이다. MySQL 엔터프라이즈 서버는 서버 플러그인으로 설치되는 일련의 전용 확장 기능으로 차별화되지만, 그 외에는 버전 번호 체계를 공유하고 동일한 코드 기반으로 구축된다.

MySQL 5.6에서 사용 가능한 주요 기능은 다음과 같다:
* ANSI SQL 99의 광범위한 하위 집합 및 확장 기능
* 교차 플랫폼 지원
* SQL/PSM을 밀접하게 준수하는 절차적 언어를 사용하는 저장 프로시저
* 트리거
* 커서
* 업데이트 가능한 뷰
* InnoDB 저장 엔진 사용 시 온라인 데이터 정의 언어(DDL) 지원
* 정보 스키마
* 모니터링 목적으로 서버 실행 및 쿼리 성능에 대한 통계를 수집하고 집계하는 Performance Schema.
* SQL 표준을 더 잘 준수하기 위한 엄격 모드(strict mode)를 포함하여 런타임 동작을 제어하는 일련의 SQL 모드 옵션.
* X/Open XA 분산 트랜잭션 처리(DTP) 지원 및 기본 InnoDB 저장 엔진을 사용하는 2단계 커밋 프로토콜 지원.
* 기본 InnoDB 저장 엔진 사용 시 세이브포인트가 있는 트랜잭션 지원. NDB 클러스터 저장 엔진도 트랜잭션을 지원한다.
* InnoDB 및 NDB 클러스터 저장 엔진 사용 시 ACID 준수
* SSL 지원
* 쿼리 캐시
* 하위 SELECT(즉, 중첩된 SELECT)
* 내장된 데이터베이스 복제 지원
** 비동기 복제: 한 대의 마스터에서 여러 대의 슬레이브로의 마스터-슬레이브 복제 또는 여러 대의 마스터에서 한 대의 슬레이브로의 복제
** 준동기 복제: 마스터가 복제 완료를 기다리는 방식의 복제
** 동기 복제: MySQL Cluster에서 다중 마스터 복제가 제공된다.
** 가상 동기 복제: 다중 마스터를 지원하는 MySQL 서버의 자가 관리 그룹은 Galera Cluster 또는 내장된 Group Replication 플러그인을 사용하여 구현할 수 있다.
* 전체 텍스트 인덱싱 및 검색
* 임베디드 데이터베이스 라이브러리
* 유니코드 지원
* 최적화 도구에서 파티션 프루닝(pruning)이 가능한 파티션 테이블
* MySQL Cluster를 통한 공유 장치 없음 클러스터링
* 다중 저장 엔진 지원을 통해 애플리케이션의 각 테이블에 가장 효과적인 엔진을 선택할 수 있다.
* 기본 저장 엔진: InnoDB, MyISAM, Merge, Memory (heap), MySQL Federated, Archive, CSV, Blackhole, NDB Cluster.
* 커밋 그룹화(Commit grouping): 여러 연결의 여러 트랜잭션을 함께 모아 초당 커밋 수를 늘린다.

개발자들은 대략 2개월마다 MySQL 서버의 마이너 업데이트를 출시한다. 소스 코드는 MySQL 웹사이트나 MySQL의 깃허브 저장소에서 GPL 라이선스 하에 얻을 수 있다.

### 제한 사항
기본인 InnoDB 이외의 일부 저장 엔진을 사용할 때, MySQL은 외래 키 참조를 포함하여 구현된 일부 기능에 대해 완전한 SQL 표준을 준수하지 않는다. 체크 제약 조건(Check constraints)은 MySQL 버전 8.0.15 이전까지 모든 저장 엔진에서 구문 분석은 되지만 무시되었다.

MySQL 5.7까지 트리거는 동작/타이밍당 하나로 제한된다. 즉, 동일한 테이블에서  작업 후와  작업 전에 각각 최대 하나의 트리거만 정의할 수 있다.
뷰(View)에는 트리거를 정의할 수 없다.

MySQL 8.0.28 이전에는 와 같은 내장 함수가 2038년 1월 19일 03:14:07 UTC 이후에 을 반환했다. 2017년에 이 문제를 해결하기 위한 시도가 제출되었으나, 2022년에 제공된 최종 해결책에는 사용되지 않았다.

### 배포
MySQL은 소스 코드에서 수동으로 빌드하고 설치할 수 있지만, 특별한 맞춤 설정이 필요하지 않은 한 바이너리 패키지에서 설치하는 것이 더 일반적이다. 대부분의 리눅스 배포판에서는 패키지 관리 시스템을 통해 최소한의 노력으로 MySQL을 다운로드하고 설치할 수 있지만, 보안 및 최적화 설정을 조정하기 위해 추가 구성이 필요한 경우가 많다.

[섬네일|400px|[스퀴드 (소프트웨어)|Squid와 함께 표시된 LAMP 소프트웨어 번들.]]

MySQL은 강력한 상용 데이터베이스에 대한 저가형 대안으로 시작했지만, 점차 고차원의 요구 사항도 지원하도록 진화했다. 여전히 소규모에서 중규모의 단일 서버 배포에서 가장 흔히 사용되며, LAMP 기반 웹 애플리케이션의 구성 요소 또는 독립형 데이터베이스 서버로 사용된다. MySQL의 매력 중 상당 부분은 PhpMyAdmin과 같은 오픈 소스 도구 생태계 덕분에 가능해진 상대적인 단순성과 사용 편의성에서 비롯된다.
중간 규모에서 MySQL은 기가바이트 단위의 메모리를 갖춘 다중 프로세서 서버와 같은 더 강력한 하드웨어에 배포함으로써 확장(scaling up)할 수 있다.

그러나 단일 서버에서 성능을 확장할 수 있는 범위에는 한계가 있으므로, 더 큰 규모에서는 성능과 안정성을 향상시키기 위해 다중 서버 MySQL 배포(scaling out)가 필요하다. 전형적인 고급 구성에는 데이터 쓰기 작업을 처리하고 모든 읽기 작업을 처리하는 여러 개의 복제본(replicas, 이전 명칭 슬레이브)으로 복제되는 강력한 소스 데이터베이스(source database, 이전 명칭 마스터 데이터베이스)가 포함될 수 있다. 소스 서버는 연결된 복제본에 binlog 이벤트를 계속 전송하여, 장애 발생 시 복제본이 새로운 소스로 승격될 수 있도록 함으로써 다운타임을 최소화한다. Memcached를 사용하여 데이터베이스 쿼리 결과를 메모리에 캐싱하거나, 데이터베이스를 샤드라고 불리는 더 작은 덩어리로 나누어 분산된 여러 서버 클러스터에 분산시킴으로써 성능을 더욱 향상시킬 수 있다.

### 고가용성 소프트웨어
오라클 MySQL은 MySQL 라우터와 MySQL 쉘을 포함한 도구 조합으로 고가용성 솔루션을 제공한다. 이들은 오픈 소스 도구인 Group Replication을 기반으로 한다.

MariaDB도 제품 측면에서 유사한 솔루션을 제공한다.

### 클라우드 배포

MySQL은 마이크로소프트 애저, 아마존 일래스틱 컴퓨트 클라우드 및 오라클 클라우드 인프라스트럭처와 같은 클라우드 컴퓨팅 플랫폼에서도 실행될 수 있다. 클라우드에서 MySQL을 배포하는 몇 가지 일반적인 모델은 다음과 같다:

#### 가상 머신 이미지
이 구현에서 클라우드 사용자는 MySQL이 설치된 자신만의 머신 이미지를 업로드하거나, Amazon EC2에서 제공하는 것과 같이 MySQL이 최적화되어 설치된 기성 머신 이미지를 사용할 수 있다.

#### 서비스형 MySQL
일부 클라우드 플랫폼은 MySQL을 "서비스"로서 제공한다. 이 구성에서 애플리케이션 소유자는 MySQL 데이터베이스를 직접 설치하고 유지 관리할 필요가 없다. 대신 데이터베이스 서비스 제공자가 데이터베이스 설치 및 유지 관리 책임을 지며, 애플리케이션 소유자는 사용량에 따라 비용을 지불한다. 주목할 만한 클라우드 기반 MySQL 서비스로는 아마존 관계형 데이터베이스 서비스, Oracle MySQL HeatWave Database Service, Azure Database for MySQL, Rackspace, HP Converged Cloud, 헤로쿠 및 Jelastic 등이 있다. 이 모델에서 데이터베이스 서비스 제공자는 호스트 및 데이터베이스 관리 책임을 진다.

## 사용자 인터페이스
### 그래픽 사용자 인터페이스
그래픽 사용자 인터페이스(GUI)는 텍스트 기반 인터페이스나 명령줄 대신 그래픽 아이콘과 시각적 지표를 통해 사용자가 전자 장치 또는 프로그램과 상호작용할 수 있게 해주는 인터페이스 유형이다.

MySQL과 통합되어 사용자가 데이터베이스 구조와 데이터를 시각적으로 작업할 수 있게 해주는 제3자 상용 및 무료 그래픽 관리 애플리케이션(또는 "프론트엔드")이 제공된다.

[섬네일|right|macOS에서 실행 중인 [MySQL 워크벤치]]

#### MySQL 워크벤치

MySQL 워크벤치는 MySQL을 위한 통합 환경이다. MySQL AB에서 개발했으며, 사용자가 MySQL 데이터베이스를 그래픽으로 관리하고 데이터베이스 구조를 시각적으로 설계할 수 있게 해준다.

MySQL 워크벤치는 세 가지 에디션으로 제공된다. MySQL 웹사이트에서 다운로드할 수 있는 일반적인 자유-오픈 소스 소프트웨어인 커뮤니티 에디션, 커뮤니티 에디션의 기능을 확장하고 개선한 상용 스탠다드 에디션, 그리고 MySQL Cluster CGE가 있다.

#### 기타 GUI 도구
* Adminer
* Database Workbench
* DBeaver
* DBEdit
* dbForge
* HeidiSQL
* 리브레오피스 베이스
* Navicat
* 오픈오피스 베이스
* PhpMyAdmin
* SQLBuddy
* SQL요그
* Toad for MySQL
* 웹민

### 명령줄 인터페이스
명령줄 인터페이스는 사용자가 텍스트 행(명령줄)을 연속적으로 입력하여 프로그램에 명령을 내리는 컴퓨터 프로그램과의 상호작용 수단이다. MySQL은 많은 명령줄 도구와 함께 제공되며, 그중 주된 인터페이스는  클라이언트이다.

MySQL Utilities는 일반적인 유지 관리 및 관리 작업을 수행하도록 설계된 유틸리티 세트이다. 원래 MySQL 워크벤치의 일부로 포함되었으나, 현재는 오라클에서 독립형 다운로드로 제공된다.

Percona Toolkit은 펄로 개발된 MySQL용 교차 플랫폼 툴킷이다. Percona Toolkit은 복제가 올바르게 작동하는지 증명하고, 손상된 데이터를 복구하며, 반복적인 작업을 자동화하고 서버 속도를 높이는 데 사용될 수 있다. Percona Toolkit은 CentOS 및 데비안과 같은 여러 리눅스 배포판에 포함되어 있으며, 페도라 및 우분투용 패키지도 제공된다. Percona Toolkit은 원래 Maatkit으로 개발되었으나, 2011년 말부터 Maatkit의 개발은 중단되었다.

MySQL 쉘은 MySQL 데이터베이스의 대화형 사용 및 관리를 위한 도구이다. 자바스크립트, 파이썬 또는 SQL 모드를 지원하며 관리 및 접근 목적으로 사용될 수 있다.

## 애플리케이션 프로그래밍 인터페이스
언어별 API를 갖춘 많은 프로그래밍 언어들이 MySQL 데이터베이스에 접근하기 위한 라이브러리를 포함하고 있다. 여기에는 .NET/CLI 언어를 위한 MySQL Connector/Net과 자바를 위한 JDBC 드라이버가 포함된다. MySQL은 `mysqlx` 이름공간에서 C++와 인터페이싱하기 위한 Connector/C++를 제공한다.

또한 MySQL Connector/ODBC라고 불리는 ODBC 인터페이스는 ASP나 어도비 콜드퓨전과 같이 ODBC 인터페이스를 지원하는 추가적인 프로그래밍 언어들이 MySQL 데이터베이스와 통신할 수 있게 해준다. URL 기반 쿼리 방법인 HTSQL도 MySQL 어댑터와 함께 제공되어, 구조화된 URL을 통해 웹 클라이언트와 MySQL 데이터베이스 간의 직접적인 상호작용을 가능하게 한다. 파이썬이나 Node.js와 같은 언어를 위한 다른 드라이버들도 존재한다.

## 프로젝트 포크
다양한 MySQL 포크가 존재하며, 그중 일부는 다음과 같다:

### 현재
#### MariaDB
MariaDB는 GNU GPL 하에 자유 소프트웨어로 남기 위해 고안된 MySQL 관계형 데이터베이스 관리 시스템의 커뮤니티 개발 포크이다. 이 포크는 오라클의 인수에 따른 우려로 인해 MySQL을 포크한 MySQL의 원개발자들이 주도하고 있다.
#### Percona Server for MySQL
Percona에 의해 포크된 Percona Server for MySQL은 공식 MySQL 릴리스와 긴밀한 호환성을 유지하는 것을 목표로 한다. 또한 Percona Server for MySQL에는 InnoDB 저장 엔진의 Percona 포크인 XtraDB가 포함되어 있다.

### 중단됨
#### Drizzle
Drizzle은 현재 없어진 MySQL DBMS의 6.0 개발 브랜치에서 포크된 자유 소프트웨어/오픈 소스 관계형 데이터베이스 관리 시스템(DBMS)이었다. MySQL과 마찬가지로 Drizzle은 클라이언트/서버 아키텍처를 가졌으며 SQL을 주요 명령 언어로 사용했다. Drizzle은 GNU 일반 공중 사용 허가서(GPL) 버전 2 및 3 하에 배포되었으며, 프로토콜 드라이버 및 복제 메시징을 포함한 일부 부분은 BSD 허가서 하에 배포되었다.
#### 웹스케일SQL
웹스케일SQL은 MySQL 5.6의 소프트웨어 브랜치로, 2014년 3월 27일 페이스북, 구글, 링크드인, 트위터가 공동 노력의 일환으로 발표했다. 이는 서버 팜에서 실행되는 대규모 복제 데이터베이스 구축과 같이 대규모 배포에 특화된 새로운 기능들을 MySQL에 추가하기 위한 중앙 집중식 개발 구조를 제공하기 위함이었다. 따라서 웹스케일SQL은 각 회사가 독자적인 MySQL 브랜치를 유지하는 데 들이는 노력을 통합하고 더 많은 개발자를 모으는 길을 열었다. 이러한 회사들의 노력을 결합하고 MySQL에 다양한 변경 사항과 새로운 기능을 통합함으로써, 웹스케일SQL은 대규모 환경에서의 MySQL 배포 지원을 목표로 했다. 프로젝트의 소스 코드는 GNU 일반 공중 사용 허가서 버전 2 하에 라이선스가 부여되었으며 깃허브에 호스팅되어 있다.
#### OurDelta
호주 회사 Open Query(나중에 Catalyst IT Australia에 인수됨)가 만든 OurDelta 배포판에는 두 가지 버전이 있었다. 하나는 MySQL 기반의 5.0이었고, 다른 하나는 MariaDB 기반의 5.1이었다. 여기에는 Open Query와 제레미 콜, 구글을 포함한 MySQL 커뮤니티의 다른 저명한 멤버들이 개발한 패치들이 포함되었다. 패치들이 MariaDB 메인라인에 통합되자 OurDelta의 목표는 달성되었고, OurDelta는 빌드 및 패키징 툴체인을 Monty Program(현재의 MariaDB Plc)으로 넘겼다.

## 같이 보기

* 데이터베이스 관리 도구 비교
* MySQL 데이터베이스 엔진 비교
* 관계형 데이터베이스 관리 시스템 비교

## 내용주

## 각주

## 외부 링크

* 
* 오라클의 MySQL 페이지


분류:워드프레스
분류:오라클 소프트웨어
분류:1995년 소프트웨어
분류:썬 마이크로시스템즈 소프트웨어
분류:크로스 플랫폼 소프트웨어
분류:관계형 데이터베이스 관리 시스템
분류:자유 데이터베이스 관리 시스템
분류:GPL 라이선스 소프트웨어