Skip to content
VDS · 数据库

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 磁盘很快,但只有一块。