27.7 libmysqld, the Embedded MySQL Server Library

The embedded MySQL server library makes it possible to run a
full-featured MySQL server inside a client application. The main
benefits are increased speed and more simple management for embedded
applications.

Note

The libmysqld embedded server library is
deprecated as of MySQL 5.7.19 and will be removed in MySQL 8.0.

The embedded server library is based on the client/server version of
MySQL, which is written in C/C++. Consequently, the embedded server
also is written in C/C++. There is no embedded server available in
other languages.

The API is identical for the embedded MySQL version and the
client/server version. To change a threaded application to use the
embedded library, you normally only have to add calls to the
following functions.

Then, link your code with libmysqld.a instead
of libmysqlclient.a. To ensure binary
compatibility between your application and the server library,
always compile your application against headers for the same series
of MySQL that was used to compile the server library. For example,
if libmysqld was compiled against MySQL
5.6 headers, do not compile your application against
MySQL 5.7 headers, or vice versa.

Because the
mysql_library_xxx()
functions are also included in
libmysqlclient.a, you can change between the
embedded and the client/server version by just linking your
application with the right library. See
Section 27.8.7.41, “mysql_library_init()”.

One difference between the embedded server and the standalone server
is that for the embedded server, authentication for connections is
disabled by default.