如何在CentOS或Ubuntu云服务器上一键部署MySQL?

在CentOS和Ubuntu上,一键部署MySQL可以通过脚本或Docker实现。以下是几种常用方法:


一、使用官方脚本(Ubuntu/Debian)

1. 下载并运行MySQL官方安装脚本

# 下载MySQL APT仓库配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb

# 安装配置包(交互式选择MySQL版本)
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb

# 更新包列表并安装MySQL
sudo apt update
sudo apt install -y mysql-server

# 安全配置(可选)
sudo mysql_secure_installation

二、使用自动化脚本(CentOS/Ubuntu通用)

1. 创建一键安装脚本 install_mysql.sh

#!/bin/bash

# 检测系统类型
if [ -f /etc/redhat-release ]; then
    # CentOS/RHEL
    echo "检测到CentOS/RHEL系统"

    # 安装MySQL 8.0
    sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    sudo yum install -y mysql-community-server

    # 启动服务
    sudo systemctl start mysqld
    sudo systemctl enable mysqld

elif [ -f /etc/lsb-release ]; then
    # Ubuntu/Debian
    echo "检测到Ubuntu/Debian系统"

    # 安装MySQL
    sudo apt update
    sudo apt install -y mysql-server

    # 启动服务
    sudo systemctl start mysql
    sudo systemctl enable mysql
else
    echo "不支持的系统"
    exit 1
fi

# 获取初始密码(仅CentOS MySQL 8.0需要)
if [ -f /var/log/mysqld.log ]; then
    TEMP_PASS=$(sudo grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
    echo "临时密码: $TEMP_PASS"
fi

echo "MySQL安装完成!"

2. 执行脚本

chmod +x install_mysql.sh
sudo ./install_mysql.sh

三、使用Docker部署(最快捷)

1. 安装Docker(如果未安装)

# 通用Docker安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

2. 一键运行MySQL容器

# 最新版MySQL
docker run -d 
  --name mysql-server 
  -e MYSQL_ROOT_PASSWORD=your_password 
  -e MYSQL_DATABASE=myapp 
  -p 3306:3306 
  -v mysql_data:/var/lib/mysql 
  mysql:8.0

# 或使用MySQL 5.7
docker run -d 
  --name mysql57 
  -e MYSQL_ROOT_PASSWORD=your_password 
  -p 3307:3306 
  mysql:5.7

四、使用Docker Compose(推荐生产环境)

1. 创建 docker-compose.yml

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "StrongPassword123!"
      MYSQL_DATABASE: "app_db"
      MYSQL_USER: "app_user"
      MYSQL_PASSWORD: "UserPassword123!"
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
      - ./my.cnf:/etc/mysql/conf.d/custom.cnf
    command: 
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci

volumes:
  mysql_data:

2. 启动服务

docker-compose up -d

五、安全配置建议

安装后建议执行:

# 1. 运行安全脚本
sudo mysql_secure_installation

# 2. 创建新用户(通过MySQL客户端)
mysql -u root -p
-- 在MySQL中执行
CREATE USER 'username'@'%' IDENTIFIED BY 'StrongPassword!';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

六、验证安装

# 检查服务状态
sudo systemctl status mysql  # Ubuntu
sudo systemctl status mysqld # CentOS

# 检查版本
mysql --version

# 连接测试
mysql -u root -p -e "SELECT VERSION();"

注意事项

  1. 云服务器安全组:确保开放3306端口(仅限必要IP)
  2. 密码强度:MySQL 8.0默认要求强密码
  3. 数据持久化:Docker部署务必挂载数据卷
  4. 备份:定期备份/var/lib/mysql(原生安装)或Docker卷

根据需求选择合适的方法:

  • 快速测试:使用Docker方案
  • 生产环境:建议使用系统包安装或Docker Compose
  • 自动化部署:使用Ansible等工具更佳
云服务器