Product docs and API reference are now on Akamai TechDocs.
Search product docs.
Search for “” in product docs.
Search API reference.
Search for “” in API reference.
Search Results
 results matching 
 results
No Results
Filters
Installing MariaDB on Debian 12
Traducciones al EspañolEstamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
MariaDB is a fork of the popular cross-platform MySQL database management system and is considered a full drop-in replacement 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 and community contributors with the intention 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 guide.
Before You Begin
If you have not already done so, create a Linode account and Compute Instance. See our Get Started with Linode and Creating a Linode (Compute Instance) guides.
Follow our Setting Up and Securing a Compute Instance guide to update your system and configure your hostname. You can also to set the timezone, create a limited user account, and harden SSH access.
To check your hostname run:
hostname hostname -f
The first command should show your short hostname, and the second should show your fully qualified domain name (FQDN) if you have one assigned.
Install and Setup MariaDB
Install MariaDB using the package manager.
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, which also applies to MariaDB.
Note:
Allowing unrestricted access to MariaDB on a public IP is not advised. However, you can 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 address, you should implement firewall rules that restrict access to specific IP addresses.
MariaDB Client
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
Log into MariaDB as the root user:
sudo mysql -u root -p
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.
You'll then be presented with a welcome header and the MariaDB prompt as shown below:
MariaDB [(none)]>
To view a list of available commands, type \h
at the prompt. You then see:
General information about MariaDB can be found at
http://mariadb.org
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for `help'.
clear (\c) Clear the current input statement.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
For server side help, type 'help contents'
MariaDB [(none)]>
Securing the Installation
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 versions, where socket-based authentication was the default and required manual reconfiguration.
Next, run the mysql_secure_installation
script to address several security concerns in a default MariaDB installation:
sudo 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.
Using MariaDB
Create a New MariaDB User and Database
Log in to the database again. When you’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
In the example below,
testdb
is the name of the database,testuser
is the user, andpassword
is the user’s password. You should replacepassword
with a secure password:CREATE DATABASE testdb; CREATE user 'testuser'@localhost IDENTIFIED BY 'password'; GRANT ALL ON testdb.* TO 'testuser' IDENTIFIED BY 'password';
You can shorten this process by creating the user while assigning database permissions:
CREATE DATABASE testdb; GRANT ALL ON testdb.* TO 'testuser' IDENTIFIED BY 'password';
Then exit MariaDB:
exit;
Create a Sample Table
Log back in as
testuser
, entering the password when prompted:sudo mysql -u testuser -p
Create a sample table called
customers
:USE testdb; CREATE TABLE customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);
- This creates a table with a
customer_id
field of the typeINT
for integer.- This field is auto-incremented for new records and used as the primary key.
- Two other fields are created,
first_name
andlast_name
for storing the customer’s name.
- This creates a table with a
View the new table: SHOW TABLES;
+------------------+ | Tables_in_testdb | +------------------+ | customers | +------------------+ 1 row in set (0.00 sec)
Add some data:
INSERT INTO customers (first_name, last_name) VALUES ('John', 'Doe');
View the data:
SELECT * FROM customers;
+-------------+------------+-----------+ | customer_id | first_name | last_name | +-------------+------------+-----------+ | 1 | John | Doe | +-------------+------------+-----------+ 1 row in set (0.00 sec)
Then exit MariaDB:
exit;
Reset the MariaDB Root Password
If you forget your root MariaDB password, it can be reset.
Stop the current MariaDB server instance.
sudo systemctl stop mariadb
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.
Restart MariaDB:
sudo systemctl start mariadb
Log in to the MariaDB server with the root account, this time without supplying a password:
sudo mysql -u root
Use the following commands to reset root’s password. Replace
password
with a strong password:FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password'; exit;
Revert the environment settings to allow the database to start with grant tables and networking:
sudo systemctl unset-environment MYSQLD_OPTS
Then restart MariaDB:
sudo systemctl start mariadb
You should now be able to log into the database with your new root password:
sudo mysql -u root -p
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
This page was originally published on