云服务器搭建mysql服务器配置?

在云服务器上搭建 MySQL 服务器是一个标准且重要的运维任务。由于云服务商(如阿里云、腾讯云、AWS 等)的操作系统通常以 Linux(CentOS/Ubuntu)为主,以下我将以 Ubuntu 22.04CentOS 7/8 为例,提供一套从安装、基础配置到安全加固的完整指南。


第一步:系统准备与更新

无论使用哪种发行版,首先应更新系统包列表,确保软件源是最新的。

Ubuntu/Debian:

sudo apt update && sudo apt upgrade -y

CentOS/RHEL:

sudo yum update -y
# 或者对于较新的版本 (Rocky/Alma)
sudo dnf update -y

第二步:安装 MySQL 数据库

方案 A:使用官方仓库安装(推荐,版本较新)

1. Ubuntu 22.04+
Ubuntu 默认源中通常已包含 MySQL,直接安装即可:

sudo apt install mysql-server -y

注意:安装过程中可能会提示设置 root 密码或选择认证插件(auth_socket),建议初学者选择 mysql_native_password 并设置强密码,或者直接使用 auth_socket(需后续配置 sudo 用户)。

2. CentOS 7/8 / Rocky Linux
需要先下载 MySQL 官方 YUM 仓库配置文件:

# 下载并安装 repo 包
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

# 安装 MySQL Server (默认会安装社区版 8.0)
sudo yum install mysql-server -y

方案 B:使用 Docker 安装(灵活,适合开发测试)

如果你不想污染宿主机环境,Docker 是最快的方式:

docker run --name mysql-container 
  -e MYSQL_ROOT_PASSWORD=your_strong_password 
  -p 3306:3306 
  -d mysql:8.0

第三步:初始化与安全加固(重要)

安装完成后,MySQL 可能尚未完全安全。请运行安全脚本进行初始化。

Ubuntu:

sudo mysql_secure_installation

按提示操作:

  1. 验证当前 root 密码(如果刚安装过 auth_socket,可跳过)。
  2. 设置 root 密码(如果之前没设)。
  3. 移除匿名用户?(Yes)
  4. 禁止 root 远程登录?(Yes)
  5. 移除测试数据库?(Yes)
  6. 重载权限表?(Yes)

CentOS:
CentOS 安装后没有交互式脚本,需要手动进入 MySQL 执行安全命令:

sudo systemctl start mysqld
# 获取临时 root 密码(日志中会有记录)
sudo grep 'temporary password' /var/log/mysqld.log

# 登录并修改密码
mysql -u root -p

进入 SQL 界面后执行:

-- 修改 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';

-- 删除匿名用户
DROP USER ''@'localhost';
DROP USER ''@'%';

-- 禁止 root 远程登录
DROP USER 'root'@'%';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';

-- 删除测试库
DROP DATABASE IF EXISTS test;
FLUSH PRIVILEGES;
EXIT;

第四步:配置远程访问(云服务器核心步骤)

默认情况下,MySQL 只允许本地 (localhost) 连接。要在云服务器上从外部连接,需要做两件事:修改 MySQL 配置配置云防火墙

1. 修改 MySQL 绑定地址

编辑配置文件:

  • Ubuntu: /etc/mysql/mysql.conf.d/mysqld.cnf
  • CentOS: /etc/my.cnf

找到 [mysqld] 部分,注释掉 bind-address = 127.0.0.1,或者直接改为 0.0.0.0

[mysqld]
bind-address = 0.0.0.0

保存后重启服务:

sudo systemctl restart mysql   # Ubuntu
sudo systemctl restart mysqld  # CentOS

2. 创建远程用户

在 MySQL 内部创建一个允许特定 IP 或所有 IP 登录的用户(生产环境强烈建议限制 IP):

-- 允许特定 IP 登录 (例如你的办公电脑 IP 192.168.1.100)
CREATE USER 'admin'@'192.168.1.100' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'192.168.1.100';

-- 或者允许任意 IP 登录 (仅用于测试,不推荐生产环境)
-- CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPassword123!';
-- GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';

FLUSH PRIVILEGES;

3. 配置云服务器安全组(关键)

登录你的云服务商控制台(阿里云、腾讯云、AWS 等):

  1. 找到该实例的 安全组防火墙 设置。
  2. 添加入方向规则:
    • 协议:TCP
    • 端口:3306
    • 授权对象/来源 IP
      • 生产环境:填入你固定的公网 IP 地址。
      • 测试环境:可以暂时填 0.0.0.0/0(但风险较高)。
  3. 保存规则。

第五步:验证连接

在你的本地电脑(非服务器)上使用客户端工具(如 Navicat, DBeaver, 或命令行)尝试连接:

命令行测试:

mysql -h <云服务器公网IP> -u admin -p

输入刚才设置的密码。如果成功进入 mysql> 提示符,说明搭建完成。


💡 最佳实践建议

  1. 关闭 Root 远程登录:永远不要允许 root 用户从 % (任意 IP) 登录。创建一个普通管理员账号用于日常维护。
  2. 使用 SSH 隧道:为了最高安全性,建议不开放 3306 端口到公网,而是通过 SSH 隧道连接:
    ssh -L 3306:localhost:3306 user@<云服务器IP>

    然后本地连接 localhost:3306 即可。

  3. 定期备份:利用云服务器的快照功能,或使用 mysqldump 编写定时脚本将数据备份到对象存储(OSS/S3)。
  4. 监控资源:关注 CPU、内存和磁盘 I/O,防止慢查询拖垮服务器。

按照以上步骤,你就可以拥有一台安全、可用的云服务器 MySQL 数据库了。如果有具体的报错信息或特殊的业务需求,欢迎继续提问!