MySQL은 플러그인 모델이라는 독특한 구조를 사용한다. 원하는 기능들을 플러그인으로 개발해 MySQL에 추가함으로써 확장이 가능하다. 전문 검색 엔진을 위한 검색어 파서, 비밀번호 검증과 커넥션 제어 등 많은 기능이 플러그인으로 구현되어 제공된다. 스토리지 엔진 또한 플러그인으로 제공되며, 기본적으로 제공되는 스토리지 엔진 외 다른 스토리지 엔진을 개발해 추가할 수도 있다. 플러그인은 MySQL이 제공하는 플러그인 API를 사용해 개발할 수 있다.
그러나 플러그인은 MySQL의 변수나 함수를 직접 호출할 수 있다는, 즉 캡슐화가 되어 있지 않다는 점과 오직 MySQL 서버와 인터페이스할 수 있고 플러그인끼리는 통신할 수 없다는 단점이 있다. 또한 플러그인은 상호 의존 관계를 설정할 수 없어 초기화가 어렵다.
MySQL 8.0부터는 기존의 플러그인 구조를 대체하기 위해 컴포넌트 구조가 지원된다. 컴포넌트 구조는 MySQL의 하위 시스템을 논리적 컴포넌트의 집합으로 캡슐화하는 것을 목표로 하고 있다. 컴포넌트는 다른 컴포넌트들과 통신할 수 있으며, 다른 컴포넌트가 사용할 수 있도록 API를 제공할 수도 있다.