MySQL 与 MariaDB:安装与您的第一个数据库
在 VDS 上安装数据库服务器、安全的初始配置、创建数据库和用户、检查连接,以及常见的初次报错。
更新于 2026年8月23日
MySQL 及其兼容分支 MariaDB 是大多数 PHP 网站运行的数据库。它们的命令和客户端相同,差异从精细调优开始。
安装
apt update && apt install -y mariadb-server # Debian, Ubuntu
dnf install -y mariadb-server # AlmaLinux, CentOS Stream
systemctl enable --now mariadb
如果您确实需要 Oracle 的 MySQL,请从其官方仓库安装 mysql-server。服务名称将是 mysql。
立即堵住基本的安全漏洞:
mariadb-secure-installation
脚本会要求您设置 root 密码、删除匿名用户、禁止 root 远程登录并删除测试数据库。所有问题都回答“yes”。
数据库与用户
不要以 root 身份运行应用程序——为每个项目创建单独的用户:
CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'shop'@'localhost' IDENTIFIED BY 'long-random-password';
GRANT ALL PRIVILEGES ON shop.* TO 'shop'@'localhost';
FLUSH PRIVILEGES;
utf8mb4 编码是必须的:MySQL 中旧的 utf8 每个字符只存储三个字节,遇到 emoji 和部分字符会出错。
检查:
mariadb -u shop -p shop -e "SELECT 1;"
关于权限的更多内容,请参阅用户与授权。
初始配置
配置文件位于 /etc/mysql/mariadb.conf.d/50-server.cnf 或 /etc/my.cnf.d/。以下是您应立即修改的最低限度设置:
[mysqld]
bind-address = 127.0.0.1
innodb_buffer_pool_size = 1G
max_connections = 100
bind-address = 127.0.0.1 使数据库仅在本地可访问。如果您的应用程序在同一台机器上,就应该这样设置。如果您需要从外部访问数据库,请先阅读远程访问再作任何更改。
缓冲池大小根据套餐选择——请参阅内存调优。
修改后执行:systemctl restart mariadb。
常见错误
| 现象 | 原因 | 处理方法 |
|---|---|---|
Access denied for user | 密码错误或用户条目绑定了不同的主机 | 检查 SELECT user, host FROM mysql.user; |
Can't connect through socket | 服务未运行 | systemctl status mariadb,查看 journalctl -u mariadb |
Too many connections | 应用程序未关闭连接 | 在应用侧使用连接池,然后调整 max_connections |
| 文字乱码 | 数据库和连接的编码不一致 | 全部统一为 utf8mb4 |
| 重启后数据库未启动 | 服务未设置为开机自启 | systemctl enable mariadb |
机器没有自动备份。在您的第一张可用表建好后立即设置转储——数据库备份。NVMe 磁盘很快,但只有一块。