MySQL 和 MariaDB 是 Linux 服务器上最常用的关系型数据库,几乎所有 LAMP/LEMP 建站方案都少不了它们。本文以 Debian/Ubuntu 为主,逐步演示安装、安全初始化、创建数据库和用户,以及字符集配置,帮助你在搬瓦工 VPS 上快速搭建可用的数据库环境。
本文要点
- 选择 MySQL 还是 MariaDB?两者的区别与建议
- 安装后必须运行的 mysql_secure_installation 安全向导
- 创建独立数据库与用户,最小化权限原则
- 正确配置 UTF-8 字符集,避免乱码
- CentOS/AlmaLinux 安装差异对照
MySQL 与 MariaDB 的选择
MySQL 和 MariaDB 在语法与协议上高度兼容,绝大多数应用(WordPress、Discuz、Laravel 等)对两者均无感知。主要区别如下:
| 对比项 | MySQL | MariaDB |
|---|---|---|
| 维护方 | Oracle | MariaDB 基金会(开源社区) |
| Debian/Ubuntu 默认 | 需手动添加源 | 系统源内直接可用 |
| 性能 | 优秀 | 与 MySQL 接近,部分场景更好 |
| 建议场景 | 需要 MySQL 官方功能 | 通用建站首选 |
新手建议
安装 MariaDB(Debian/Ubuntu)
# 更新软件源
apt update
# 安装 MariaDB
apt install -y mariadb-server mariadb-client
# 启动并设置开机自启
systemctl enable --now mariadb
# 验证服务状态
systemctl status mariadb安装 MySQL 官方版(Debian/Ubuntu)
若需要 MySQL 官方版本,可从官方 APT 仓库安装:
# 下载并安装 MySQL 官方 APT 配置包(以 Ubuntu 22.04 为例)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb
dpkg -i mysql-apt-config_0.8.30-1_all.deb
apt update
apt install -y mysql-server
# 启动服务
systemctl enable --now mysqlCentOS / AlmaLinux / Rocky Linux 安装
# CentOS/RHEL 系安装 MariaDB
dnf install -y mariadb-server
systemctl enable --now mariadb运行安全初始化向导
安装后必须执行 mysql_secure_installation,它会引导你完成以下操作:
- 设置(或修改)root 密码
- 删除匿名用户
- 禁止 root 用户远程登录
- 删除测试数据库
- 刷新权限表
mysql_secure_installation不要跳过这一步
创建数据库与用户
以 root 登录后,为每个应用创建独立的数据库和用户,遵循最小权限原则:
# 登录 MySQL/MariaDB
mysql -u root -p
-- 创建数据库(UTF-8 字符集)
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户(仅允许本地连接)
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY '强密码';
-- 授予该用户对应数据库的权限
GRANT ALL PRIVILEGES ON myapp.* TO 'myapp_user'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 验证用户存在
SELECT User, Host FROM mysql.user WHERE User='myapp_user';配置字符集(避免中文乱码)
编辑 MariaDB 配置文件确保全局使用 UTF-8:
# 编辑配置文件
nano /etc/mysql/mariadb.conf.d/50-server.cnf
# 在 [mysqld] 段添加以下内容:
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 同时在 [client] 段添加:
default-character-set = utf8mb4
# 重启服务使配置生效
systemctl restart mariadb验证字符集
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set%';"常用管理命令速查
| 操作 | 命令 |
|---|---|
| 查看所有数据库 | SHOW DATABASES; |
| 查看当前用户 | SELECT USER(); |
| 查看所有用户 | SELECT User,Host FROM mysql.user; |
| 删除数据库 | DROP DATABASE dbname; |
| 备份数据库 | mysqldump -u root -p dbname > backup.sql |
| 恢复数据库 | mysql -u root -p dbname < backup.sql |
定期备份
小结
- 新手建站选 MariaDB,从系统源安装最简便
- 安装后立即运行 mysql_secure_installation 完成安全初始化
- 每个应用单独建库建用户,权限最小化
- 全局配置 utf8mb4 字符集,从根源避免中文乱码
- 养成定期 mysqldump 备份的习惯
常见问题
MySQL 和 MariaDB 可以混用吗?
两者协议高度兼容,同一应用程序通常可以无缝切换。但不建议在同一系统同时运行两个实例,容易造成端口冲突与管理混乱。
mysql_secure_installation 的 root 密码和系统 root 密码一样吗?
不一样。这里的 root 是数据库的超级管理员账户,与 Linux 系统的 root 用户完全独立,建议设置不同的密码。
忘记了数据库 root 密码怎么办?
可以用 --skip-grant-tables 模式启动 MariaDB 后重置密码,具体步骤:先停止服务,以 --skip-grant-tables 重启,登入后执行 ALTER USER 重设密码,再正常重启。
如何查看 MariaDB 的版本?
登录后执行 SELECT VERSION(); 即可,或在终端执行 mysql --version。