一、引言
在独立开发、部署后端服务,甚至是学习阶段,很多开发者都会遇到这样一个问题:如何在自己的服务器上部署数据库?
相比使用云数据库,自己在服务器上安装和配置 MySQL 不仅更具性价比,还能让你深入理解数据库的运行机制与安全策略。
本篇文章将带你一步步完成从安装 MySQL到创建数据库并开放远程访问的完整流程,环境以阿里云服务器为例,涵盖实际操作截图与命令,帮助你顺利完成数据库部署,无论你是初学者还是正准备搭建自己的项目环境,都能快速上手。
二、准备工作
本教程以阿里云服务器为例进行演示,系统环境建议使用常见的 Linux 发行版,如 CentOS 7+ 或 Ubuntu 20+。后续的命令行操作将在该服务器中完成。
✅ 拥有服务器的管理员权限(root 或 sudo)
你需要有权限执行系统级操作,比如安装软件包、配置防火墙等。如果你是通过阿里云创建的 ECS 实例,默认情况下是 root 权限。
✅ 可连接服务器的方式(SSH 工具或控制台终端)
推荐使用 Termius、Xshell 或 macOS/Linux 的内置终端;
如果你不方便使用本地工具,也可以直接登录阿里云后台,使用 “远程连接” 功能打开 Web 控制台。
📌 小提示:
如果你是第一次使用阿里云,建议先熟悉一下控制台中 “实例管理” 和 “安全组” 的配置项,后续步骤会涉及。
三、安装与配置 MySQL
确认服务器准备就绪后,我们就可以开始安装 MySQL 数据库了。下面将以常见的 Linux 发行版为例,演示如何快速安装并完成基本配置,为后续使用打下基础。
第一步:在阿里云服务器上安装 MySQL
MySQL 在 Linux 下可以通过官方提供的 YUM 仓库进行安装。以下步骤以 CentOS 7 系统为例,其他发行版请参考对应的安装方式。
✅ 1.1 下载并安装 MySQL YUM 源
首先,下载并安装官方提供的 YUM 配置包:
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-5.noarch.rpm
这一步会将 MySQL 的官方软件源添加到你的系统中,供后续安装使用。
✅ 1.2 安装 MySQL 服务端
执行以下命令开始安装:
sudo yum install mysql-server
安装过程中可能会要求你确认依赖项,直接输入 y 并回车即可。
⚠️ 常见问题:GPG check FAILED
有时候你可能会遇到如下报错:
Error: GPG check FAILED
这是因为系统在安装时会校验软件包签名,但部分公钥可能未导入或版本不一致。
✅ 解决方法如下:
1)手动导入 MySQL 的 GPG 公钥
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql
如果命令执行成功,说明密钥已导入。
2)清除 YUM 缓存并重新建立缓存:
sudo yum clean all
sudo yum makecache
3)重新尝试安装 MySQL:
sudo yum install mysql-community-server
如仍出现问题,可以暂时关闭 GPG 校验(仅建议在信任源时使用):
sudo yum install mysql-community-server --nogpgcheck
✅ 1.3 启动并设置开机启动 MySQL
安装完成后,启动 MySQL 服务并设置开机自启:
sudo systemctl start mysqld
sudo systemctl enable mysqld
✅ 1.4 获取 MySQL 默认 root 密码(非常重要!)
MySQL 安装后,会为 root@localhost 用户生成一个临时密码,必须先登录使用该密码:
sudo grep 'temporary password' /var/log/mysqld.log
你会看到一串密码形如:
A temporary password is generated for root@localhost: Abc123$xyz
请妥善保存这个密码,后续登录时需要使用。
第二步:初始化 MySQL 安全配置
安装完 MySQL 并获取到默认 root 密码后,接下来需要进行一次安全初始化配置,主要是为了提升数据库的安全性。
MySQL 官方提供了一个交互式命令行工具 mysql_secure_installation,用于快速完成这些配置。
✅ 运行初始化工具
sudo mysql_secure_installation
✅ 配置步骤说明:
该命令会启动一个配置向导,你只需根据提示操作即可,流程如下:
输入当前的 root 默认密码
刚才我们通过日志查看到的那个临时密码,在这里粘贴输入。
设置新的 root 密码
按提示输入一个新密码,建议符合 MySQL 8 的复杂度要求,例如 Abcd1234!。
后续选项建议全部选择 Y(yes):
删除匿名用户?→ Y
禁止远程 root 登录?→ Y
删除 test 数据库和对它的访问权限?→ Y
重新加载权限表?→ Y
这些选项可以有效提升你的数据库安全性,尤其是在公网环境下。
第三步:登录 MySQL 并创建数据库
完成安全初始化后,我们就可以登录 MySQL,创建属于我们项目的数据库和用户账户。
✅ 1. 使用 root 用户登录 MySQL
mysql -u root -p
输入你刚才设置的新密码后,就会进入 MySQL 的交互式命令行环境(mysql shell)。
✅ 2. 创建数据库
这里我们以一个名为 drama_db 的数据库为例,使用推荐的编码格式 utf8mb4:
CREATE DATABASE drama_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
这能保证我们后续使用时支持 Emoji、中文等多语言字符。
✅ 3. 创建数据库用户并授权
出于安全考虑,建议创建一个独立的数据库用户进行项目访问:
CREATE USER 'drama_user'@'localhost' IDENTIFIED BY 'YourPassword123!';
GRANT ALL PRIVILEGES ON drama_db.* TO 'drama_user'@'localhost';
FLUSH PRIVILEGES;
此用户只能在本地访问数据库,适合部署在同一台服务器上的后端程序(如 Java、Node.js 等)。
🌐 4. 如果你希望远程连接数据库,请使用以下授权方式:
GRANT ALL PRIVILEGES ON drama_db.* TO 'drama_user'@'%' IDENTIFIED BY 'YourPassword123!';
FLUSH PRIVILEGES;
其中 % 表示允许任意 IP 远程访问该数据库(可替换为特定 IP 更安全)。
🛠 5. 修改 MySQL 配置文件,允许远程连接
编辑 MySQL 配置文件:
sudo vi /etc/my.cnf
找到 [mysqld] 部分,确认或添加以下配置(如果已有 bind-address,需注释掉或改成 0.0.0.0):
bind-address = 0.0.0.0
保存后,重启 MySQL 服务使配置生效:
sudo systemctl restart mysqld
到这一步,数据库已可使用本地或远程连接工具(如 Navicat、DataGrip)进行访问,后续就可以接入项目业务或测试用数据了。
第四步:开放阿里云安全组端口(默认 3306)
即使你已经配置好了 MySQL 的远程访问权限,如果阿里云服务器的安全组未放行 3306 端口,外部设备仍然无法连接数据库。因此,我们还需要登录阿里云控制台,手动放行 MySQL 所用的端口。
✅ 1. 登录阿里云后台配置安全组
打开阿里云控制台;
找到你购买的 ECS 实例;
在左侧导航栏中选择【网络与安全】→【安全组】;
点击对应安全组右侧的【配置规则】。
✅ 2. 添加一条入方向规则
端口范围: 3306/3306
协议类型: TCP
授权对象(源 IP):
0.0.0.0/0 表示全部 IP 可访问(不推荐用于正式环境);
推荐设置为你当前公网 IP /32,例如:123.45.67.89/32,只允许你自己访问。
✅ 小建议:开发调试阶段可以先设为 0.0.0.0/0,上线后及时收紧为指定 IP,提升安全性。
✅ 3. 检查 MySQL 服务是否正常运行
查看服务状态:
sudo systemctl status mysqld
显示 active (running) 即为正常运行。
✅ 4. 登录验证并检查数据库是否存在
mysql -u root -p
登录后执行以下命令:
SHOW DATABASES;
你应该能看到刚刚创建的 drama_db 数据库,说明配置已生效。
结语
通过本文的四个步骤,我们成功在阿里云服务器上完成了 MySQL 的安装、配置、安全初始化,以及数据库和用户的创建,最终实现了远程访问能力。这一过程不仅适用于本地测试环境,也为部署正式后端系统打下了坚实的基础。
💡小贴士:
若在连接过程中遇到问题,优先排查:MySQL 服务是否启动、防火墙是否阻止、用户权限和安全组是否正确配置;
不建议长期开放 3306 端口给全网(0.0.0.0/0),请及时改为固定 IP;
数据库初步搭建完成后,可进一步配置自动备份、连接池优化等高级特性。