MariaDB
Installation
Ubuntu/Debian
# Update package manager
sudo apt update
# Install MariaDB
sudo apt install mariadb-server mariadb-client -y
# Start and enable MariaDB
sudo systemctl start mariadb
sudo systemctl enable mariadb
# Verify installation
sudo systemctl status mariadb
mysql --versionCentOS/RHEL
# Install MariaDB
sudo yum install mariadb-server mariadb -y
# Start and enable MariaDB
sudo systemctl start mariadb
sudo systemctl enable mariadb
# Verify installation
sudo systemctl status mariadb
mysql --versionInitial Setup
Secure Installation
# Run security script (recommended)
sudo mysql_secure_installation
# This will:
# - Set root password
# - Remove anonymous users
# - Disable root login remotely
# - Remove test databaseManual Setup
# Login without password (first time)
sudo mysql -u root
# Set root password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
# Exit
exit;
# Now login with password
mysql -u root -pService Management
# Start MariaDB
sudo systemctl start mariadb
# Stop MariaDB
sudo systemctl stop mariadb
# Restart MariaDB
sudo systemctl restart mariadb
# Check status
sudo systemctl status mariadb
# View logs
sudo tail -f /var/log/mysql/error.logDatabase & User Management
# Connect to MariaDB
mysql -u root -p
# Create database
CREATE DATABASE dbname;
# Create user
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
# Grant privileges
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
# Show databases
SHOW DATABASES;
# Show users
SELECT User, Host FROM mysql.user;
# Exit
exit;Remote Access
Enable Remote Connection
# Edit MariaDB config
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
# Change bind-address
bind-address = 0.0.0.0
# Or comment out to listen on all interfaces
# bind-address = 127.0.0.1Create Remote User
mysql -u root -p
# Create user for remote access
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'%';
FLUSH PRIVILEGES;
# Or limit to specific IP
CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'192.168.1.100';Apply Changes
# Restart MariaDB
sudo systemctl restart mariadbFirewall Configuration
# UFW (Ubuntu)
sudo ufw allow 3306
# Firewalld (CentOS)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reloadBackup & Restore
# Backup single database
mysqldump -u root -p dbname > dbname.sql
# Backup all databases
mysqldump -u root -p --all-databases > all_databases.sql
# Restore database
mysql -u root -p dbname < dbname.sql
# Restore all databases
mysql -u root -p < all_databases.sqlConfiguration
MariaDB Configuration File
# Main configuration
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
# Common settings
max_connections = 200
max_allowed_packet = 256M
innodb_buffer_pool_size = 1G
query_cache_type = 1
query_cache_size = 16MCommon Commands
# Connect to MariaDB
mysql -u username -p -h hostname
# Show current user
SELECT USER();
# Show current database
SELECT DATABASE();
# Show tables
SHOW TABLES;
# Show table structure
DESCRIBE tablename;
# Show privileges
SHOW GRANTS FOR 'username'@'localhost';
# Revoke privileges
REVOKE ALL PRIVILEGES ON dbname.* FROM 'username'@'localhost';
# Delete user
DROP USER 'username'@'localhost';Uninstall
Ubuntu/Debian
# Stop MariaDB
sudo systemctl stop mariadb
# Remove MariaDB
sudo apt remove mariadb-server mariadb-client -y
sudo apt autoremove -y
# Remove data
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/mysql
sudo rm -rf /var/log/mysqlCentOS/RHEL
# Stop MariaDB
sudo systemctl stop mariadb
# Remove MariaDB
sudo yum remove mariadb-server mariadb -y
# Remove data
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/my.cnf