
Security
This Quickstart Guide details essential MariaDB security measures. It covers using mariadb-secure-installation
for initial setup, enforcing least privilege for user accounts, and securing network access with firewalls and binding addresses. Key practices include data encryption (SSL/TLS, TDE), hardening configurations (disabling LOCAL INFILE
, enabling logging), and regular updates and auditing.
Quickstart Guide: MariaDB Security
Securing your MariaDB installation is crucial to protect your data. This quickstart guide outlines essential steps and best practices to enhance your MariaDB server's security.
1. Initial Installation Security (mariadb-secure-installation
)
mariadb-secure-installation
)Immediately after installing MariaDB, run the mariadb-secure-installation
script (or mysql_secure_installation
on older systems or symlinked versions). This script guides you through critical initial security configurations:
Set a Strong Root Password: This is the most important step to prevent unauthorized administrative access.
Remove Anonymous Users: Anonymous user accounts are created by default for testing and should be removed from production environments.
Disallow Remote Root Login: Prevent the
root
user from connecting to the database from outside the local machine. This mitigates brute-force attacks.Remove Test Database: The
test
database and its associated privileges are created by default for testing. Remove them to eliminate a potential security risk.Reload Privilege Tables: Ensure all changes take effect immediately.
Example Command:
sudo mariadb-secure-installation
Follow the prompts to configure your security settings.
2. User Account Management and Privileges
Principle of Least Privilege: Grant users only the minimum necessary privileges required for their tasks. Avoid giving
ALL PRIVILEGES
unless absolutely necessary for specific administrative accounts.Create Dedicated Users: Do not use the
root
account for regular application operations. Create specific users for your applications with limited privileges.Strong Passwords: Enforce strong, unique passwords for all database user accounts.
Limit Host Access: Restrict user accounts to connect only from specific IP addresses or hostnames where they are expected to connect (e.g.,
user@'localhost'
oruser@'192.168.1.100'
).
3. Network Security
Firewall Configuration: Configure your operating system's firewall (e.g.,
ufw
on Linux, Windows Firewall) to allow connections to MariaDB only from trusted IP addresses or subnets.Change Default Port (Optional but Recommended): MariaDB typically listens on port 3306. Changing this default port can add a layer of obscurity, deterring automated scanning attempts.
Edit your MariaDB configuration file (e.g.,
/etc/mysql/mariadb.conf.d/50-server.cnf
ormy.cnf
on Linux,my.ini
on Windows).Change the
port
directive to a different value.Restart the MariaDB service.
Bind Address: Configure MariaDB to listen only on specific network interfaces (e.g.,
bind-address = 127.0.0.1
for local connections only, or a specific private IP address for network-restricted access).
4. Data Encryption
Encryption in Transit (SSL/TLS): Encrypt communication between clients and the MariaDB server using SSL/TLS. This protects data from eavesdropping as it travels across the network.
Encryption at Rest (TDE): For highly sensitive data, consider using MariaDB's Transparent Data Encryption (TDE) to encrypt data stored on disk.
5. Configuration Hardening
Disable
LOCAL INFILE
: This feature can be a security risk as it allows clients to read files from the server's filesystem. Disable it in your MariaDB configuration:local-infile=0
Enable Logging: Configure MariaDB to log errors and general queries. This helps in auditing activities and troubleshooting security incidents.
log_error = /var/log/mysql/error.log general_log = 1 general_log_file = /var/log/mysql/mysql.log
Run as Non-Root User: MariaDB should never run as the
root
user in production environments. It should run under a dedicated, unprivileged system user (e.g.,mysql
ormariadb
).
6. Regular Maintenance and Auditing
Keep Software Updated: Regularly update MariaDB Server and your operating system to the latest stable versions to benefit from security fixes.
Audit Database Activity: Implement auditing to track database operations, especially for sensitive data or administrative actions. MariaDB provides an Audit Plugin for this purpose.
Regular Security Audits: Periodically review your MariaDB server's security configuration and user privileges.
Resources:
Last updated
Was this helpful?