A curated list of awesome MariaDB resources, maintained by Vettabase and sponsored by the MariaDB Foundation.
Inspired by the awesome-*
trend on GitHub.
This list is intended for Developers. There are lists intended for other audiences. See README.md.
- Articles
- Connectors (Drivers)
- IDEs
- Migrations
- Misc Libraries
- NoSQL and Key Value Storage
- ORMs
- Schema Versioning Tools
- User-Defined Functions
- User Interfaces
See the key for explanations of the terms used in this list.
The following resources are specific to MariaDB.
Tutorials
These tutorials show how to connect to MariaDB and perform some basic operations.
Loosely ordered by language, SQL first.
Project | Language | Level | Format | Notes |
---|---|---|---|---|
MariaDB on Rosetta Code | Pure SQL | ALL LEVELS | Text | |
MariaDB Tutorial | Pure SQL | BEGINNER | Text | |
Using MariaDB With ASP.NET Core Web API | ASP.NET | INTERMEDIATE | Text | |
Query MariaDB Data in ColdFusion | ColdFusion | BEGINNER | Text | |
Creating an MVC application using NODEjs and MariaDB | NodeJS | INTERMEDIATE | Text | |
NodeJS MariaDB Integration: 3 Easy Steps | NodeJS | INTERMEDIATE | Text | |
Getting Started with MariaDB using Docker and Node.js | NodeJS | INTERMEDIATE | Text | |
MariaDB for Beginners | SQL, Java | BEGINNER | Video | [1] |
Using MariaDB databases with Lazarus/Free Pascal | Pascal | BEGINNER | Text | |
MariaDB Tutorial | SQL, PHP | BEGINNER | Text | [2] |
How To Store and Retrieve Data in MariaDB Using Python | Python | BEGINNER / INTERMEDIATE | Text | |
Connect to MariaDB Data in Ruby | Ruby | BEGINNER | Text | |
Three simple rules to not fail (too much) your data design | N/A | BEGINNER / INTERMEDIATE | Text | [3] |
Notes
- The Java part only shows how to connect to MariaDB with a JDBC driver.
- The PHP part might be obsolete, because it still uses the old
mysql
non-OOP extension. However, editing the snippets to usemysqli
or other libraries should be easy. - Fully data design oriented
Language-specific articles
These articles are about language best practices, specific libraries, or non-trivial operations.
Go
- Integrating MariaDB with GoLang Microservice Restful API
- Golang: a RESTful API Using Temporal Table With MariaDB
- How to Connect and Operate MariaDB Using GORM in Go
- gin-rest-api-sample - An example project that uses Gin, GORM and MariaDB.
Java
- Getting Started With JPA/Hibernate
- How To Connect MariaDB Docker Containers with Java Spring And JDBC
- Reactive Programming with Java Spring, R2DBC and MariaDB
Node.js
- Getting Started with MariaDB using Docker and Node.js
- MariaDB, MySQL, and Node.js: Why Using the Right Connector Matters
Perl
PHP
Python
- Getting Started with MariaDB using Docker, Python and Flask
- Quick Tip: SQLAlchemy for MySQL and Pandas
Scala
Plain SQL articles
These articles are about MariaDB SQL dialect, regardless which language you use to develop applications.
- MariaDB/MySQL: use SQL properly to run less queries
- How to compose strings in MariaDB
- Leveraging "INSERT INTO ... RETURNING": Practical Scenarios
- MariaDB 10.2 Window Functions
- Using Temporary Tables in MariaDB
- MariaDB: WITH TIES syntax
- Hybrid Data Models: How To Have Your JSON Cake and Eat MariaDB Too
- Using JSON in MariaDB
- The UUID data type in MariaDB
- The simultaneous_assignment mode in MariaDB 10.3.5
- READ ONLY transactions in MariaDB and MySQL
- Tags and FullText indexes in MySQL
The connectors are grouped by language.
Platform / Language | ORM Name | MariaDB Support | Notes |
---|---|---|---|
C | Connector/C | YES | |
C | mariadb++ | YES | |
C++ | MariaDB Connector/C++ | YES | |
C++, Delphi | Universal Data Access | YES | |
Erlang | MySQL/OTP | MySQL | |
Fortran | MariaDB Connector Fortran | YES | |
Go | Go-MySQL-Driver | YES | |
Java | Connector/J | YES | Type 4 JDBC driver |
Java | Connector/R2DBC | YES | Non-blocking API |
JRuby | jdbc-mariadb | YES | JDBC driver for JRuby. |
Julia | MySQL.jl | YES | Built on MariaDB C/Connector |
Lisp | Allegro MySQL Direct Connect Library | NOT VERIFIED | |
.NET | Connector/NET | MySQL | |
.NET | dotConnect for MySQL | MySQL | |
Node.js | Connector/Node.js | YES | |
OCaml | OCaml-MariaDB | YES | [1] |
ODBC | Connector/ODBC | YES | |
Perl | DBD::MariaDB | YES | |
PHP | MySQLi | MySQL | Both procedural and OO API. |
PHP | PDO MySQL | MySQL | Multi-database abstraction layer. |
Python | Connector/Python | YES | |
Python | PyMySQL | PARTIAL | Pure Python driver, MariaDB >= 10.4 |
Python | mysqlclient | YES | |
R | RMariaDB | YES | |
Raku (Perl 6) | DBIish | YES | |
Ruby | mysql Ruby gem | MySQL | [2] |
Ruby | tencentcloud-sdk-mariadb | YES | [2] |
Swift | Perfect MariaDB Connector | YES | |
Zig | myzql | NOT VERIFIED | [3] |
Notes
- Uses Connector/C via CTypes. From the
README
file: "Only the prepared-statement APIs are exposed by OCaml-MariaDB, as these functions provide typed query parameters and database field access". tencentcloud-sdk-mariadb
is actively maintained by Tencent. Themysql
gem is by far the most used, but it's unmaintained since 2021.jdbc-mariadb
is also unmaintained since 2019.- Pre-production maturity level.
Guides on how to work with MariaDB using various IDEs.
IDE | Project | Format | Notes |
---|---|---|---|
Eclipse | Accessing Maria DB from within Eclipse | Video | |
Embarcadero | New in 10.2: MariaDB Support | Text | |
IntelliJ IDEA | IntelliJ IDEA - MariaDB | Text | |
RubyMine | RubyMine MariaDB plugin documentation | Text | |
Visual Studio | How to: Create A Model Based on MariaDB Database | Text |
Libraries that can't be classified as connectors or ORMs.
- MariaDB4j - a Java launcher to run MariaDB without installation or external dependencies.
- SQLGlot - Libraries to parse SQL in various dialects. Supports MySQL with very minor divergencies from MariaDB.
Links to articles and information on the various methods and utilities to read and write unstructure or NoSQL data to MariaDB.
- Dynamic Columns Tutorial
- Dynamic columns in MariaDB
- How to Manage NoSQL Data with MariaDB
- MariaDB for NoSQL users
- NoSQL Protocol and Caching in MariaDB MaxScale
- Using JSON in MariaDB
- Using MariaDB as a MongoDB NoSQL Database
Language | ORM Name | License | MariaDB Support | Notes |
---|---|---|---|---|
Go | GORM | MIT | NOT VERIFIED | [1] |
Python | Django-MySQL | MIT | YES | |
Java | Hibernate | LGPL 2.1 / Apache 2 | YES | [2] |
Java | EclipseLink | Open Source | YES | [2] |
Java | OpenJPA | Apache 2 | YES | [2] |
Java | jOOQ | Apache 2 / Proprietary | YES | |
Java | MyBatis | Apache 2 | YES | |
JavaScript | TypeORM | MIT | NOT VERIFIED | [2] |
Python | SQLAlchemy | MIT | YES | |
Ruby | mariadb_temporal_tables | MIT | YES | |
Ruby on Rails | Active Record | MIT | YES | |
Rust | Diesel | Apache 2 / MIT | YES | |
SQLx | SQLx | Apache 2 / MIT | YES | [3] |
Notes
- Official MariaDB support is not mentioned on the website, but projects and materials, including the documentation, seem to use MariaDB successfully. Feedback would be welcomed on how it behaves where MySQL and MariaDB syntax differ.
- No easy way to insert the
IGNORE
,USE
orFORCE INDEX
syntax into a query. - SQLx is an SQL toolkit. But if you don't like to build SQL strings, you can take a look at the ORMs and query builders it supports.
@TODO Check the ORMs in this list.
Project Name | MariaDB Support | License / Platform |
---|---|---|
ByteBase | 10.7+ | Open source, proprietary, cloud |
Flyway | 5.1, 10.11 | Apache 2 |
Liquibase | PARTIAL | Proprietary or Apache 2 |
Skeema.io | 10.1 | Proprietary or Apache 2 |
To our knowledge, all MySQL UDFs should work with MariaDB. For this reason we don't provide information about MariaDB compatibility.
Articles
- Extending MariaDB with user-defined functions (slides)
- MySQL: Implementation of User Defined (Loadable) Function and using BLOB to store BigInteger
- Writing User-Defined Functions in Rust
Frameworks
Frameworks and libraries to ease UDFs developing.
Project | License | Language | Notes |
---|---|---|---|
lib_mysqludf_skeleton | C | LGPL | UDF skeleton project |
sql-udf | Open Source | Rust | Wrapper for developing UDFs in Rust |
Libraries
Project | License | Language | Notes |
---|---|---|---|
Levenshtein-MySQL-UDF | LGPL 3 | C | Levenshtein and related functions. |
libmyemail | MIT | C++ | Function to send emails. |
lib_mysqludf_stomp | Apache 2 | C | UDF to send STOMP messages. |
lib_mysqludf_ta | Open Source | C | Library for technical analysis. |
lib_mysqludf_xml | LGPL 2.1 | C | XQL functions |
mysql_udf_http_golang | Open Source | Go | HTTP requests. |
GUIs
Project Name | MariaDB Support | Platforms | Licence | Notes |
---|---|---|---|---|
Beekeeper Studio | NOT VERIFIED | Linux, MacOS, Windows | BOTH | |
DataGrip | YES | Linux, MacOS, Windows | Proprietary | |
DBeaver | NOT VERIFIED | Linux, MacOS, Windows | BOTH | |
DbVisualizer | YES | Native: Linux, Windows; JVM: Linux, MacOS, Windows | BOTH | |
Harlequin | MySQL | Python | Open Source | |
HeidiSQL | YES | Windows | Open Source | |
LibreOffice Base | NOT VERIFIED | Linux, MacOS, Windows | Open Source | [1] |
ocelotgui | YES | Linux | Open Source | |
OpenOffice Base | MySQL | Linux, MacOS, Windows | Open Source | [2] |
Sequel Pro | PARTIAL | MacOS | Open Source | [3] |
Database Workbench | NOT VERIFIED | Windows | Proprietary | |
dbForge Studio for MySQL | NOT VERIFIED | Windows | Proprietary | |
dbForge Edge | NOT VERIFIED | Windows | Proprietary | |
Navicat | YES | Linux, MacOS, Windows | Proprietary | |
SQLPro Studio | NOT VERIFIED | MacOS, Windows, iOS | Proprietary | |
SQLyog | NOT VERIFIED | Windows | Proprietary | |
TablePlus | NOT VERIFIED | Linux, MacOS, Windows, iOS | Proprietary | |
Toad Edge | NOT VERIFIED | MacOS, Windows, Jenkins plugin | Proprietary | |
Valentina Studio | NOT VERIFIED | Linux, MacOS, Windows | Proprietary |
Notes
- LibreOffice Base is a generic data visualization frontend. To learn how to use it with MariaDB, see the MariaDB KB.
- Apache OpenOffice is the project from which LibreOffice was originally forked. LibreOffice became more popular over time, so consider LibreOffice Base as well. OpenOffice Base does not support MariaDB. However it supports MySQL and ODBC drivers, so in practice it should work with MariaDB for standard use cases.
- At the time of writing, MariaDB support is only mentioned in the
README.md
file. A quick search on GitHub shows that this support is currently limited to version identification, some permissions and a TODO note.
Web Interfaces
Project Name | MariaDB Support | Platforms | License | Notes |
---|---|---|---|---|
Adminer | NOT VERIFIED | PHP | Apache2 or GPL2 | |
Express Admin | YES | NodeJS | MIT | [1] |
phpMyAdmin | YES | PHP | GPL2 |
- Express Admin is a NodeJS tool for easy creation of administrative interfaces, data entry forms and data visualisation MariaDB and other databases.
TUIs
Project Name | MariaDB Support | Platforms | License |
---|---|---|---|
mycli | YES | Python | Open Source |
Meaning of the terms used in this list.
Some of the sections include resources that were created for MySQL, or for both MariaDB and MySQL. The extent of MariaDB support is not always optimal. For those resources, we indicate the MariaDB support level as follows:
YES
: Specific support for MariaDB is indicated, or can be inferred from the documentation or the source code. "Supports MySQL/MariaDB" is not considered specific MariaDB support, because the author might assume that what works on MySQL will work on MariaDB equally well.MySQL
: Officially supports MySQL, but not MariaDB.NOT VERIFIED
: Officially supports MySQL and MariaDB but we do not know whether full support for MariaDB is implemented.PARTIAL
: We are aware of relevant bugs or missing features.
If you disagree about a project's MariaDB Support indication, please report a bug.
The license column might need a better name.
Cloud
- Available as a cloud service.Proprietary
- Source is available, but software is not Open Source.Open Source
- The license is approved by OSI.- For software that uses a single, open source, well-known license we sometimes indicate the license name.
For non-cloud software, we ancourage you to verify the license where relevant. Indicating a specific license is usually a simplification, because an application could be distributed with multiple licenses, or it might include libraries that use different licenses.
Copyright 2024 Vettabase Ltd and contributors.
Awesome MariaDB list is licensed under CC BY-SA 4.0 license.