-   [](https://platform.exaloop.io/)
-   Databases
-   [MySQL](https://platform.exaloop.io/db/mysql/)
-   Deployment

# Deploy MySQL Applications and Functions

Deploy MySQL client applications and server functions as separate artifact types. Clients need their executable and native dependencies; server libraries also need installation in MySQL's plugin directory and SQL registration. Begin with a built [client](https://platform.exaloop.io/db/mysql/client/) or [server library](https://platform.exaloop.io/db/mysql/functions/) and confirm the [destination's compatibility](https://platform.exaloop.io/db/reference/#compatibility).

## Server Functions

Native functions run with the server process's privileges. Library installation permissions are therefore part of the server's security boundary. Long-running calls also occupy server resources; durable state belongs in MySQL tables rather than process-local module globals.

The server must load the Codon runtime matching the SDK used to build its function libraries. Updating the SDK on a development machine does not update the runtime installed on the server.

A function update uses a new library filename and updated registration, or a server restart. Overwriting a loaded library can corrupt the running process.

## Client Applications

For a configured native target, run `exaloop --target app package --bundle-runtime`. Deployment includes `libcodon_mysql_client`, MySQL's `libmysqlclient`, and their dependencies. The [runtime packaging guide](https://platform.exaloop.io/start/distribution/#runtime-only-packages) describes how to collect native application dependencies.

## Next Steps

-   [Review connection security](https://platform.exaloop.io/db/mysql/client/#connections-and-security) for deployed clients.
-   Check [server and platform compatibility](https://platform.exaloop.io/db/reference/#compatibility) before an upgrade.

Source: https://platform.exaloop.io/db/mysql/deployment/
