> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/connectors/mariadb-connector-c/api-functions/mysql_init.md).

# mysql\_init

## Syntax

```c
MYSQL * mysql_init(MYSQL * mysql);
```

## Parameter

* `mysql` - a pointer to `MYSQL` or `NULL`. In case of passing a `NULL` pointer mysql\_init() will allocate memory and return a pointer to a MYSQL structure.

## Description

Prepares and initializes a MYSQL structure to be used with [mysql\_real\_connect()](/docs/connectors/mariadb-connector-c/api-functions/mysql_real_connect.md).

`mysql_init()` also ensures the client library is initialized, via a one-time internal initialization; it does not depend on `mysql_thread_init()`, which is a no-op retained for compatibility.

## Return Value

The `mysql_init()` function returns an address of a `MYSQL` structure, or NULL in case of memory allocation error.

{% hint style="info" %}
Members of the MYSQL structure are not intended for application use.

Any subsequent calls to any mysql function (except mysql\_options()) will fail until [mysql\_real\_connect()](/docs/connectors/mariadb-connector-c/api-functions/mysql_real_connect.md) was called.

Memory allocated by mysql\_init() must be freed with [mysql\_close()](/docs/connectors/mariadb-connector-c/api-functions/mysql_close.md).
{% endhint %}

## See Also

* [mysql\_real\_connect()](/docs/connectors/mariadb-connector-c/api-functions/mysql_real_connect.md)
* [mysql\_options()](/docs/connectors/mariadb-connector-c/api-functions/mysql_options.md)
* [mysql\_thread\_init()](/docs/connectors/mariadb-connector-c/api-functions/mysql_thread_init.md)
* [mysql\_close()](/docs/connectors/mariadb-connector-c/api-functions/mysql_close.md)

{% @marketo/form formId="4316" %}
