在安装前,确保系统软件包为最新版本,避免依赖冲突:
sudo apt update && sudo apt upgrade -y
使用Ubuntu官方软件源安装MariaDB(默认版本较新,无需额外添加仓库):
sudo apt install mariadb-server -y
安装完成后,MariaDB服务会自动启动。
通过以下命令检查MariaDB版本,确认安装成功:
mariadb --version
# 示例输出:mariadb Ver 15.1 Distrib 10.6.12-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
MariaDB自带mysql_secure_installation
脚本,用于强化数据库安全性,必须执行:
sudo mysql_secure_installation
按提示完成以下配置(建议选择默认值):
使用root账户登录本地数据库:
sudo mysql -u root -p
输入密码后,进入MariaDB命令行界面(提示符为MariaDB [(none)]>
)。
创建名为mydb
的数据库,并指定字符集为utf8mb4
(支持emoji和多语言):
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
创建用户myuser
(密码StrongPassword123!
),并授予其对mydb
数据库的所有权限:
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES; -- 刷新权限,使更改立即生效
若需允许用户远程访问,将localhost
改为%
(代表任意主机):
CREATE USER 'myuser'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%';
FLUSH PRIVILEGES;
SHOW DATABASES;
USE mydb;
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO students (name, age) VALUES ('Alice', 20), ('Bob', 22);
SELECT * FROM students;
UPDATE students SET age = 21 WHERE name = 'Alice';
DELETE FROM students WHERE name = 'Bob';
DROP TABLE IF EXISTS students;
MariaDB的主配置文件位于/etc/mysql/mariadb.conf.d/50-server.cnf
,使用文本编辑器(如nano
)修改:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
找到bind-address
配置项,将其值从127.0.0.1
(仅本地访问)改为0.0.0.0
(允许所有IP访问):
[server]
bind-address = 0.0.0.0
修改后重启MariaDB服务:
sudo systemctl restart mariadb
在[mysqld]
section中添加以下配置(根据服务器内存调整):
# InnoDB缓冲池大小(建议为物理内存的50-70%)
innodb_buffer_pool_size = 2G
# 启用慢查询日志(记录执行时间超过2秒的查询)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-queries.log
long_query_time = 2
# 查询缓存(适用于读多写少的场景)
query_cache_size = 64M
query_cache_type = 1
# 最大连接数(根据并发需求调整)
max_connections = 500
修改后重启服务:
sudo systemctl restart mariadb
若需允许远程主机访问数据库,需为用户授予远程权限(以myuser
为例):
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' IDENTIFIED BY 'StrongPassword123!';
FLUSH PRIVILEGES;
若服务器开启了ufw
防火墙,需开放3306端口(MariaDB默认端口):
sudo ufw allow 3306/tcp
sudo ufw reload
使用远程数据库工具(如DBeaver、Navicat)或命令行工具,输入以下信息连接:
myuser
;StrongPassword123!
;mydb
。使用mysqldump
工具备份mydb
数据库:
mysqldump -u root -p mydb > mydb_backup.sql
输入root密码后,备份文件将保存在当前目录。
将备份文件恢复到数据库(需先创建目标数据库):
mysql -u root -p mydb < mydb_backup.sql
输入root密码后,数据将恢复到mydb
数据库。
sudo systemctl start mariadb
sudo systemctl stop mariadb
sudo systemctl restart mariadb
sudo systemctl status mariadb
若服务运行正常,将显示active (running)
。
bind-address
配置错误。sudo systemctl start mariadb
;sudo ufw allow 3306/tcp
;bind-address
配置:确保为0.0.0.0
。sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
exit
sudo systemctl start mariadb
设置cron
任务,每天凌晨自动备份数据库:
crontab -e
添加以下内容(每天凌晨2点备份mydb
数据库):
0 2 * * * mysqldump -u root -p'YourRootPassword' mydb > /path/to/backup/mydb_$(date +\%F).sql
mysqltuner
工具分析数据库性能:sudo apt install mysqltuner
mysqltuner
ssl-ca
、ssl-cert
、ssl-key
参数;