Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
b55e419
Update publish date for How to Configure HAProxy HTTP Load Balancing …
nmelehan Jan 28, 2025
ad20b67
Merge pull request #7180 from nmelehan-akamai/rc-v1.360.0
nmelehan-akamai Jan 28, 2025
fc64ad7
Merge pull request #7188 from nmelehan-akamai/rc-v1.361.0
nmelehan-akamai Feb 6, 2025
1b94d52
Merge pull request #7193 from jddocs/rc-v1.362.0
jddocs Feb 11, 2025
15eecb3
Merge pull request #7196 from wildmanonline/rc-v1.363.0
wildmanonline Feb 13, 2025
b330cdf
Merge pull request #7198 from jddocs/rc-v1.364.0
jddocs Feb 20, 2025
5dc78e8
Merge pull request #7202 from nmelehan-akamai/rc-v1.365.0
nmelehan-akamai Feb 26, 2025
c1629de
Merge pull request #7206 from jddocs/rc-v1.366.0
jddocs Mar 4, 2025
9a01f33
Merge pull request #7217 from jddocs/rc-v1.367.0
jddocs Mar 12, 2025
c23333d
Merge pull request #7222 from nmelehan-akamai/rc-v1.368.0
nmelehan-akamai Mar 18, 2025
66851f9
Merge pull request #7227 from nmelehan-akamai/rc-v1.369.0
nmelehan-akamai Mar 27, 2025
01ace9b
Merge pull request #7230 from nmelehan-akamai/rc-v1.370.0
nmelehan-akamai Mar 31, 2025
121c3c8
Merge pull request #7244 from nmelehan-akamai/rc-v1.371.0
nmelehan-akamai Apr 14, 2025
28f6e52
Merge pull request #7249 from jddocs/rc-v1.372.0
jddocs Apr 22, 2025
614a341
Merge pull request #7256 from nmelehan-akamai/rc-v1.373.0
nmelehan-akamai Apr 29, 2025
2bef8a7
Merge pull request #7261 from nmelehan-akamai/rc-v1.374.0
nmelehan-akamai May 6, 2025
db7964e
Merge pull request #7262 from jddocs/rc-v1.375.0
jddocs May 8, 2025
d0c9625
Merge pull request #7267 from nmelehan-akamai/rc-v1.376.0
nmelehan-akamai May 15, 2025
01d7efe
Merge pull request #7270 from jddocs/rc-v1.377.0
jddocs May 20, 2025
5f32985
Merge pull request #7278 from nmelehan-akamai/rc-v1.378.0
nmelehan-akamai May 28, 2025
96cf6d5
Merge pull request #7280 from jddocs/rc-v1.379.0
jddocs May 29, 2025
2d57fb3
Merge pull request #7283 from jddocs/rc-v1.380.0
jddocs Jun 3, 2025
96f7eaa
Merge pull request #7286 from jddocs/rc-v1.381.0
jddocs Jun 9, 2025
f0133c9
Merge pull request #7293 from jddocs/rc-v1.382.0
jddocs Jun 24, 2025
0c8f32b
Merge pull request #7297 from jddocs/rc-v1.383.0
jddocs Jun 30, 2025
9f3bd94
Merge pull request #7301 from nmelehan-akamai/rc-v1.384.0
nmelehan-akamai Jul 15, 2025
73eeaeb
Merge pull request #7310 from jddocs/rc-v1.385.0
jddocs Jul 23, 2025
1dee3bb
Merge pull request #7317 from jddocs/rc-v1.386.0
jddocs Aug 7, 2025
a7092f8
Remove obsolete MariaDB guide for Debian 9
Aug 11, 2025
8a30220
Renamed folder to match guide slug for Hugo buildUpdate MariaDB guide…
Jul 29, 2025
f739a37
Cherry-picked MariaDB guide update for Debian 12
Aug 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
slug: how-to-install-mariadb-on-debian-9
title: "Installing MariaDB on Debian 9"
title_meta: "How to Install MariaDB on Debian 9"
description: "This guide shows how to install and configure the MariaDB server on Debian 9."
og_description: "MariaDB is a robust, scalable and reliable SQL Server that can serve as a drop-in replacement for MySQL. This guide shows how to install and configure it on Debian 9."
slug: how-to-install-mariadb-on-debian-12
title: "Installing MariaDB on Debian 12"
title_meta: "How to Install MariaDB on Debian 12"
description: "This guide shows how to install and configure the MariaDB server on Debian 12."
og_description: "MariaDB is a robust, scalable and reliable SQL Server that can serve as a drop-in replacement for MySQL. This guide shows how to install and configure it on Debian 12 (Bookworm)."
authors: ["Ryan Syracuse"]
contributors: ["Ryan Syracuse"]
published: 2020-01-31
keywords: ["mariadb", "Debian 9", "debian", "database", "mysql"]
keywords: ["mariadb", "Debian 12", "debian", "database", "bookworm", "mysql"]
license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)'
aliases: ['/databases/mariadb/how-to-install-mariadb-on-debian-9/','/databases/mariadb/mariadb-setup-debian/']
aliases: ['/databases/mariadb/how-to-install-mariadb-on-debian-12/','/databases/mariadb/mariadb-setup-debian/']
image: Installing_MariaDB_on_Debian9.png
external_resources:
- '[MariaDB Knowledge Base](https://mariadb.com/kb/en)'
Expand All @@ -19,22 +19,22 @@
platform:
key: how-to-install-mariadb
keywords:
- distribution: Debian 9
- distribution: Debian 12
tags: ["debian","mariadb","database"]
deprecated: true
deprecated: false
---

MariaDB is a fork of the popular cross-platform MySQL database management system and is considered a full [drop-in replacement](https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-features/) for MySQL. MariaDB was created by one of MySQL's original developers in 2009 after MySQL was acquired by Oracle during the Sun Microsystems merger. Today MariaDB is maintained and developed by the [MariaDB Foundation](https://mariadb.org/en/foundation/) and community contributors with the intention of it remaining GNU GPL software.
MariaDB is a fork of the popular cross-platform MySQL database management system and is considered a full [drop-in replacement](https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-features/) for MySQL. MariaDB was created by one of MySQL's original developers in 2009 after MySQL was acquired by Oracle during the Sun Microsystems merger. Today MariaDB is maintained and developed by the [MariaDB Foundation](https://mariadb.org/en/foundation/) and community contributors with that it remain GNU GPL software.

{{< note >}}
This guide is written for a non-root user. Commands that require elevated privileges are prefixed with `sudo`. If you're not familiar with the `sudo` command, you can check our [Users and Groups](/docs/guides/linux-users-and-groups/) guide.
{{< /note >}}

## Before You Begin

1. If you have not already done so, create a Linode account and Compute Instance. See our [Getting Started with Linode](/docs/products/platform/get-started/) and [Creating a Compute Instance](/docs/products/compute/compute-instances/guides/create/) guides.
1. If you have not already done so, create a Linode account and Compute Instance. See our [Get Started](/docs/products/platform/get-started/) with Linode and [Creating a Linode (Compute Instance)](/docs/products/compute/compute-instances/guides/create/) guides.

1. Follow our [Setting Up and Securing a Compute Instance](/docs/products/compute/compute-instances/guides/set-up-and-secure/) guide to update your system and configure your hostname. You may also wish to set the timezone, create a limited user account, and harden SSH access.
1. Follow our [Setting Up and Securing a Compute Instance](/docs/products/compute/compute-instances/guides/set-up-and-secure/) guide to update your system and configure your hostname. You can also set the timezone, create a limited user account, and harden SSH access.

To check your hostname run:

Expand All @@ -49,31 +49,33 @@

sudo apt install mariadb-server

MariaDB will bind to localhost (127.0.0.1) by default. For information on connecting to a remote database using SSH, see our [MySQL remote access guide](/docs/guides/create-an-ssh-tunnel-for-mysql-remote-access/), which also applies to MariaDB.
MariaDB will bind to localhost (127.0.0.1) by default. For information on connecting to a remote database using SSH, see our [MySQL remote access](/docs/guides/create-an-ssh-tunnel-for-mysql-remote-access/) guide, which also applies to MariaDB.

{{< note >}}
Allowing unrestricted access to MariaDB on a public IP not advised but you may change the address it listens on by modifying the `bind-address` parameter in `/etc/my.cnf`. If you decide to bind MariaDB to your public IP, you should implement firewall rules that only allow connections from specific IP addresses.
Allowing unrestricted access to MariaDB on a public IP not advised but you may change the address it listens on by modifying the `bind-address` parameter in `/etc/mysql/mariadb.conf.d/50-server.cnf`. If you decide to bind MariaDB to your public IP, you should implement firewall rules that restrict access to specific IP addresses.
{{< /note >}}

### MariaDB Client

The standard tool for interacting with MariaDB is the `mariadb` client, which installs with the `mariadb-server` package. The MariaDB client is used through a terminal using the `mysql` command.
The standard tool for interacting with MariaDB is the `mariadb` client, which is installed alongside the `mariadb-server` package. You can access the MariaDB client in the terminal using the `mysql` command.

### Root Login

1. Log into MariaDB as the root user:

sudo mysql -u root -p

1. When prompted for login credentials, hit enter. By default MariaDB will authenticate you via the **unix_socket plugin** and credentials are not required.
{{< note >}}
On Debian 12, MariaDB uses the 'unix_socket' plugin by default. This means that if you're logged into the system as a user with root privileges, you can press **Enter* at the password prompt and still gain access--no password is required.

Check failure on line 69 in docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md

View workflow job for this annotation

GitHub Actions / Vale (spellchecker)

[vale] reported by reviewdog 🐶 [Linode.Spelling] Did you really mean 'unix_socket'? Raw Output: {"message": "[Linode.Spelling] Did you really mean 'unix_socket'?", "location": {"path": "docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md", "range": {"start": {"line": 69, "column": 36}}}, "severity": "ERROR"}

Check failure on line 69 in docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md

View workflow job for this annotation

GitHub Actions / Vale (spellchecker)

[vale] reported by reviewdog 🐶 [Linode.Spelling] Did you really mean 'unix_socket'? Raw Output: {"message": "[Linode.Spelling] Did you really mean 'unix_socket'?", "location": {"path": "docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md", "range": {"start": {"line": 69, "column": 36}}}, "severity": "ERROR"}
{{< /note >}}

You'll then be presented with a welcome header and the MariaDB prompt as shown below:

{{< output >}}
MariaDB [(none)]>
{{</ output >}}

1. To generate a list of commands for the MariaDB prompt, enter `\h`. You'll then see:
To view a list of available commands, type '\h' at the prompt. You then see:

{{< output >}}
General information about MariaDB can be found at
Expand Down Expand Up @@ -113,25 +115,33 @@

### Securing the Installation

1. After accessing MariaDB as the root user of your database, enable the **mysql_native_password**
plugin to enable root password authentication:
1. After accessing MariaDB as the root user, you can switch from socket-based authentication to password-based authentication by enabling the `mysql_native_password`
plugin:

USE mysql;
UPDATE user SET plugin='mysql_native_password' WHERE user='root';
FLUSH PRIVILEGES;
exit;
**New in MariaDB 10.11 on Debian 12**
The `mysql_secure_installation` script now offers the option to *set a root password,* which automatically switches the authentication method from `unix_socket` to `mysql_native_password`. This is a change from earlier verions, where socket-based authentication was the default and required manual reconfiguration.

Check failure on line 126 in docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md

View workflow job for this annotation

GitHub Actions / Vale (spellchecker)

[vale] reported by reviewdog 🐶 [Linode.Spelling] Did you really mean 'verions'? Raw Output: {"message": "[Linode.Spelling] Did you really mean 'verions'?", "location": {"path": "docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md", "range": {"start": {"line": 126, "column": 220}}}, "severity": "ERROR"}

Check failure on line 126 in docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md

View workflow job for this annotation

GitHub Actions / Vale (spellchecker)

[vale] reported by reviewdog 🐶 [Linode.Spelling] Did you really mean 'verions'? Raw Output: {"message": "[Linode.Spelling] Did you really mean 'verions'?", "location": {"path": "docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md", "range": {"start": {"line": 126, "column": 220}}}, "severity": "ERROR"}

1. Run the `mysql_secure_installation` script to address several security concerns in a default MariaDB installation:
Next, run the `mysql_secure_installation` script to address sseveral security concerns in a default MariaDB installation.

Check failure on line 128 in docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md

View workflow job for this annotation

GitHub Actions / Vale (spellchecker)

[vale] reported by reviewdog 🐶 [Linode.Spelling] Did you really mean 'sseveral'? Raw Output: {"message": "[Linode.Spelling] Did you really mean 'sseveral'?", "location": {"path": "docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md", "range": {"start": {"line": 128, "column": 61}}}, "severity": "ERROR"}

Check failure on line 128 in docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md

View workflow job for this annotation

GitHub Actions / Vale (spellchecker)

[vale] reported by reviewdog 🐶 [Linode.Spelling] Did you really mean 'sseveral'? Raw Output: {"message": "[Linode.Spelling] Did you really mean 'sseveral'?", "location": {"path": "docs/guides/databases/mariadb/how-to-install-mariadb-on-debian-12/index.md", "range": {"start": {"line": 128, "column": 61}}}, "severity": "ERROR"}

sudo mysql_secure_installation

You will be given the choice to change the MariaDB root password, remove anonymous user accounts, disable root logins outside of localhost, and remove test databases. It is recommended that you answer `yes` to these options. You can read more about the script in the [MariaDB Knowledge Base](https://mariadb.com/kb/en/mariadb/mysql_secure_installation/).
This script will guide you through several options, including:
- Setting a root password (if you haven't already).
- Removing anonymous user accounts.
- Disabling remote root logins.
- Removing the test database.
-
It's recommended that you answer `yes` to these prompts for a more secure setup (to harden your MariaDB installation against unauthorized access). You can read more about the script in the [MariaDB Knowledge Base](https://mariadb.com/kb/en/mariadb/mysql_secure_installation/).

## Using MariaDB

### Create a New MariaDB User and Database

1. Login to the database again. This time, if you set a password above, enter it at the prompt.
1. Log in to the database again. When your're prompted to log in to MariaDB again, you should enter the password only if you previously set one during an earlier step.

sudo mysql -u root -p

Expand Down Expand Up @@ -207,22 +217,26 @@

sudo systemctl stop mariadb

1. Then execute the following command which will allow the database to start without loading the grant tables or networking.
1. Then execute the following command which allows the database to start without loading the grant tables or networking.

sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"

{{< note>}}
This method disables grant tables and networking. While it still works in Debian 12, it is temporary and insecure--use only in emergency recovery situations.
{{< /note >}}

1. Restart MariaDB:

sudo systemctl start mariadb

1. Login to the MariaDB server with the root account, this time without supplying a password:
1. Log in to the MariaDB server with the root account, this time without supplying a password:

sudo mysql -u root

1. Use the following commands to reset root's password. Replace `password` with a strong password:

FLUSH PRIVILEGES;
UPDATE mysql.user SET password = PASSWORD('password') WHERE user = 'root';
ALTER USER'root'@'localhost' IDENTIFIED BY 'your_new_password';
exit;

1. Revert the environment settings to allow the database to start with grant tables and networking:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: "How to Configure HAProxy HTTP Load Balancing and Health Checks"
description: "Learn how to configure HAProxy for HTTP load balancing, with instructions on updating frontend and backend settings, path-based routing, and health checks."
authors: ["Tom Henderson"]
contributors: ["Tom Henderson"]
published: 2024-09-18
published: 2025-01-28
keywords: ['haproxy','http load balancing','http health checks','haproxy acl']
license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)'
---
Expand Down
Empty file.
Loading