MariaDB 入门教程

FreeGuideOnline 最新 2026-07-16

bash sudo apt update sudo apt install mariadb-server sudo mysql_secure_installation # 执行安全配置脚本

安全脚本会引导你设置 root 密码、删除匿名用户、禁止远程 root 登录等。

### 在 macOS 上安装
```bash
brew install mariadb
brew services start mariadb

3. 连接到 MariaDB 服务器

MariaDB 使用与 MySQL 完全相同的客户端命令 mysql

mysql -u 用户名 -p

输入密码后即可进入交互式命令行。出现 MariaDB [(none)]> 提示符表示连接成功。

常用连接选项

  • -h 主机地址:连接远程服务器,如 -h 192.168.1.100
  • -P 端口号:默认端口是 3306,修改时使用该选项
  • -D 数据库名:直接进入指定数据库

4. 数据库基础操作

查看与创建数据库

-- 显示所有数据库
SHOW DATABASES;

-- 创建数据库
CREATE DATABASE mydb;

-- 创建时指定字符集(推荐)
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 切换数据库
USE mydb;

删除数据库

DROP DATABASE mydb;

警告:该操作不可逆,所有数据会被永久删除。


5. 表的管理

常用数据类型

数据类型 说明
INT 整数
VARCHAR(N) 可变长度字符串,N 为最大字符数
TEXT 长文本
DATE 日期 YYYY-MM-DD
DATETIME 日期时间
DECIMAL(M,D) 精确小数,M 为总位数,D 为小数位数

创建表

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    age INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

查看表结构

DESC users;
SHOW CREATE TABLE users;

修改表

-- 添加列
ALTER TABLE users ADD phone VARCHAR(20);

-- 修改列类型
ALTER TABLE users MODIFY age TINYINT;

-- 删除列
ALTER TABLE users DROP phone;

删除表

DROP TABLE users;

6. 数据操作:CRUD 基础

CRUD 指创建(Create)、读取(Read)、更新(Update)、删除(Delete),是数据库最核心的操作。

插入数据(Create)

-- 单条插入
INSERT INTO users (username, email, age) VALUES ('alice', 'alice@example.com', 25);

-- 多条插入
INSERT INTO users (username, email, age) VALUES 
('bob', 'bob@example.com', 30),
('charlie', 'charlie@example.com', 28);

查询数据(Read)

-- 查询所有行
SELECT * FROM users;

-- 选择特定列
SELECT username, email FROM users;

-- 条件筛选
SELECT * FROM users WHERE age > 25;

-- 排序
SELECT * FROM users ORDER BY created_at DESC;

-- 限制返回行数
SELECT * FROM users LIMIT 5;

更新数据(Update)

UPDATE users SET age = 26 WHERE username = 'alice';

务必带上 WHERE 子句,否则会更新全表!

删除数据(Delete)

DELETE FROM users WHERE id = 3;

同样,缺少 WHERE 会清空整个表。


7. 用户与权限管理

创建用户

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'your_password';
  • 'localhost' 表示该用户只能从本机连接,若需远程访问可改为 '%'

授权

-- 授予某数据库全部权限
GRANT ALL PRIVILEGES ON mydb.* TO 'newuser'@'localhost';

-- 授予特定表的查询和插入权限
GRANT SELECT, INSERT ON mydb.users TO 'newuser'@'localhost';

-- 应用更改
FLUSH PRIVILEGES;

查看权限

SHOW GRANTS FOR 'newuser'@'localhost';

撤销权限与删除用户

REVOKE ALL PRIVILEGES ON mydb.* FROM 'newuser'@'localhost';
DROP USER 'newuser'@'localhost';

8. 备份与恢复

数据安全至关重要,建议定期备份数据库。

使用 mysqldump 备份

mysqldump -u root -p mydb > mydb_backup.sql

这会生成一个包含所有建表语句和数据的 SQL 文件。

恢复数据库

mysql -u root -p mydb < mydb_backup.sql

如果数据库不存在,需先创建:

CREATE DATABASE mydb;

然后再执行恢复命令。


9. 常见问题与下一步

忘记 root 密码怎么办?

Linux 下可以通过跳过权限表启动 MariaDB 来重置:

sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
mysql -u root

进入 MariaDB 后使用 ALTER USER 语句修改密码,然后正常重启服务。

如何提高查询性能?

  • 为经常出现在 WHEREJOIN 中的列创建索引。
CREATE INDEX idx_username ON users(username);