在 Compute Engine 上安装 MySQL


如需在您创建的 Compute Engine 实例上手动安装 MySQL,请完成以下步骤。

如需简要了解在 Compute Engine 上设置 MySQL 的几种方法,请参阅 Compute Engine 上的 MySQL。如需了解哪些 Compute Engine 产品适用于 MySQL,请参阅在 Compute Engine 上配置 MySQL

准备工作

  • 使用 Google Cloud 控制台启用 Compute Engine API
  • 安装 Google Cloud CLI
  • 配置工作区,使命令更简洁。将以下命令中的 PROJECT_IDREGIONZONE 替换为项目的值。如需地区的完整列表,请参阅可用区域和地区

    gcloud config set project PROJECT_ID
    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE
    

创建 Compute Engine 实例并建立 SSH 连接

为 MySQL 创建 Compute Engine 实例并建立与新建实例的 SSH 连接。默认操作系统是 Debian 10 版本。如果您希望在本教程中使用其他操作系统,则可以从 Compute Engine 文档的公共映像页面上所述的选项中进行选择。

控制台

创建 Compute Engine 实例

如需在 Google Cloud console中创建 Compute Engine 实例,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Compute Engine 虚拟机实例页面。

    转到 Compute Engine 虚拟机实例

  2. 选择新建的项目,然后点击继续

  3. 点击创建实例(如果您具有现有实例,则点击新建实例)。将实例命名为 mysql-test

  4. 选择性能级别并调整磁盘大小

  5. 如需指定非默认操作系统,请在启动磁盘部分中点击更改以配置启动磁盘的属性。在公共映像标签页中,选择操作系统,然后点击保存

  6. 为了符合安全性最佳做法,请在不使用外部 IP 地址的情况下创建实例。

    展开高级选项,然后展开网络。在网络接口下,展开默认接口,然后在外部 IPv4 地址菜单中,选择

  7. 点击创建

设置网络地址转换

如需使用 Cloud NAT 设置和管理网络地址转换,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Cloud NAT 页面。

    进入 Cloud NAT

  2. 点击开始使用创建 Cloud NAT 网关

  3. 对于网关名称,输入 nat-simple-configuration

  4. 如需选择 Cloud Router 路由器,请在选择 Cloud Router 路由器部分中执行以下操作:

    1. 对于网络,选择 default
    2. 对于区域,选择您为虚拟机指定的区域。
    3. 对于 Cloud Router,选择创建新路由器

      在随即显示的创建路由器对话框中,为路由器提供名称(例如 nat-router-simple-configuration),然后点击创建

  5. 点击高级配置

  6. 日志记录部分中,选择转换和错误。此设置会将 Cloud NAT 配置为将所有日志发送到 Cloud Logging。

  7. 点击创建

与虚拟机建立 SSH 连接

如需建立 SSH 连接,请执行以下操作:

  1. 虚拟机实例页面上的列表中查找新虚拟机实例。

  2. 在该虚拟机的连接列中,点击 SSH。SSH 终端随即在浏览器窗口中打开。

gcloud

  1. 如需创建 Compute Engine 实例,请使用 gcloud compute instances create 命令。如需指定操作系统,请添加 --image-family 参数,后跟映像系列,或添加 --image 参数,后跟特定映像版本的映像名称。例如,要使用 Debian 10 系列中的最新映像,请添加 --image-family debian-10。使用公共映像时,必须使用 --image-project 参数提供映像项目

    gcloud compute instances create \
        --image-family debian-10 \
        --image-project debian-cloud \
        --no-address \
      mysql-test
    
  2. 创建 Cloud Router 路由器。

    gcloud compute routers create nat-router-simple-configuration \
        --network=default
    
  3. 使用 Cloud NAT 设置和管理网络地址转换。

    gcloud compute routers nats create nat-simple-configuration \
        --router=nat-router-simple-configuration \
        --auto-allocate-nat-external-ips \
        --nat-all-subnet-ip-ranges \
        --enable-logging
    
  4. 使用 ssh 连接到实例。

    gcloud compute ssh \
        --tunnel-through-iap \
        mysql-test
    

    SSH 连接是使用由 Identity-Aware Proxy (IAP) 处理的 TCP 转发建立的。

安装 MySQL

以下步骤介绍了如何在 Compute Engine 实例上安装 MySQL。

Debian 10+

这些说明用于安装 MySQL 8 或 5.7。

Debian 10 及更高版本在其软件包管理系统中包含了 MariaDB,但并未包含 MySQL。MariaDB 保持与 MySQL 协议的兼容性,但具有一个独立发展的功能集。如需了解详情,请参阅 MariaDB 与 MySQL

如需安装 MySQL,请下载版本软件包并使用 dpkg 命令手动安装。

  1. 安装 wget 依赖项。

    sudo apt-get install -y wget
    
  2. 下载 MySQL Community Server 软件包。

    export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  3. 验证版本软件包文件的完整性。

    cat > ${DEB_FILE}.md5 << EOL
    799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    如果您看到以下输出,则表示验证了文件的真实性和完整性:

    mysql-apt-config_0.8.20-1_all.deb: OK
    
  4. 验证文件后,将 MySQL 软件包添加到本地软件包代码库。

    sudo dpkg -i ${DEB_FILE}
    

    系统会提示您确认安装选项,包括 MySQL 版本。

  5. 选择顶部的 MySQL 服务器和集群菜单选项后,按返回,然后使用箭头键选择服务器版本。

    本指南建议您选择 MySQL 8.0 或 5.7。选择版本后,按键盘上的 Return 键

  6. 如果对配置菜单中选择的选项感到满意,请使用箭头键选择菜单中的 Ok,然后按键盘上的 Return 键

  7. 更新软件包缓存。

    sudo apt-get update
    

    如果您收到 GPG 错误(类似于由于公钥不可用,无法验证以下签名:NO_PUBKEY 467B942D3A79BD29),请使用以下格式的命令导入缺失的 GPG 密钥

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    在演示性错误消息中,缺失的公钥为 467B942D3A79BD29;请使用 --recv-keys 选项提供此值。

    重复该命令以更新软件包缓存。

  8. 安装 MySQL。此过程会启动 MySQL 服务。

    sudo apt-get -y install mysql-community-server
    

    系统会提示您提供安装的一些详细信息,例如 root 密码。

Debian 9

这些说明用于安装 MySQL 8 或 5.7。

默认情况下,Debian 的某些版本(例如 Debian 9)安装 MariaDB 作为默认 MySQL 服务器。MariaDB 旨在与 MySQL 基本兼容,且可通过相���命令进行调用。要详细了解 MariaDB 与标准 MySQL 之间的区别,请参阅从 MySQL 迁移到 Debian 9 中的 MariaDB

如需安装 MySQL,请按照以下说明操作:

  1. 下载 MySQL Community Server 软件包。

    export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  2. 验证版本软件包文件的完整性。

    cat > ${DEB_FILE}.md5 << EOL
    9e393c991311ead61dcc8313aab8e230 ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    如果您看到以下输出,则表示验证了文件的真实性和完整性。

    mysql-apt-config_0.8.17-1_all.deb: OK
    
  3. 验证文件后,将 MySQL 软件包添加到本地软件包代码库。

    sudo dpkg -i ${DEB_FILE}
    

    系统会提示您确认安装选项,包括 MySQL 版本。

  4. 选择顶部的 MySQL 服务器和集群菜单选项后,按返回,然后使用箭头键选择服务器版本。

    本指南建议您选择 MySQL 8.0 或 5.7。选择版本后,按键盘上的 Return 键

  5. 如果对配置菜单中选择的选项感到满意,请使用箭头键选择菜单中的 Ok,然后按键盘上的 Return 键

  6. 更新软件包缓存。

    sudo apt-get update
    

    如果您收到 GPG 错误(类似于由于公钥不可用,无法验证以下签名:NO_PUBKEY 467B942D3A79BD29),请使用以下格式的命令导入缺失的 GPG 密钥

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    在演示性错误消息中,缺失的公钥为 467B942D3A79BD29;请使用 --recv-keys 选项提供此值。

    重复该命令以更新软件包缓存。

  7. 安装 MySQL。此过程会启动 MySQL 服务。

    sudo apt-get -y install mysql-community-server
    

Ubuntu

对于 Ubuntu 1804 及更早版本,请按照以下说明安装 MySQL 5.7
对于 Ubuntu 2004 及更高版本,请按照以下说明安装 MySQL 8

  1. 更新 apt-get 软件包管理系统。

    sudo apt-get update
    
  2. 安装 MySQL。此过程会启动 MySQL 服务。

    sudo apt-get -y install mysql-server
    
  3. 默认情况下,在 Ubuntu 发行版中,mysql 会使用 auth_socket 插件对 root 用户进行身份验证。运行此查询以验证此默认配置:

    echo "SELECT user, authentication_string, plugin, host
            FROM mysql.user WHERE user='root' ;" \
         | sudo mysql -t -u root
    

    输出结果显示从 localhost 进行连接的 root 用户将使用 auth_socket 插件:

    +------+-----------------------+-------------+-----------+
    | user | authentication_string | plugin      | host      |
    +------+-----------------------+-------------+-----------+
    | root |                       | auth_socket | localhost |
    +------+-----------------------+-------------+-----------+
    
  4. 更改此设置,并将 root 密码更改为难以猜测的密码:

    export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD"
    echo "ALTER USER 'root'@'localhost'
          IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \
          | sudo mysql -u root
    

    输出结果中包含新的 root 密码:

    Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
    

CentOS 或 RHEL 7

这些说明用于安装 MySQL 8。

第 7 版 CentOS 和 RHEL 已在软件包管理系统包含了 MariaDB,但并未包含 MySQL。如需安装 MySQL,您必须先更新软件包管理系统。

  1. 下载 MySQL Community Server 软件包。

    export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. 验证版本软件包文件的完整性。

    cat > ${RPM_FILE}.md5 << EOL
    8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    如果您看到以下输出,则表示验证了文件的真实性和完整性。

    mysql80-community-release-el7-4.noarch.rpm: OK
    
  3. 更新软件包管理系统以包含 MySQL。

    sudo rpm -Uvh ${RPM_FILE}
    
  4. 安装 MySQL。

    sudo yum -y install mysql-community-server
    
  5. 启动 MySQL 服务器。

    sudo /usr/bin/systemctl start mysqld
    
  6. 从服务器日志获取临时 root 密码

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

Rocky Linux 或 RHEL 8

这些说明用于安装 MySQL 8。

Rocky Linux、CentOS Stream 和 RHEL 的第 8 版在其软件包管理系统中包含了 MariaDB,但并未包含 MySQL。如需安装 MySQL,您必须先更新软件包管理系统。

  1. 下载 MySQL Community Server 软件包。

    export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. 验证版本软件包文件的完整性。

    cat > ${RPM_FILE}.md5 << EOL
    0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    如果您看到以下输出,则表示验证了文件的真实性和完整性。

    mysql80-community-release-el8-2.noarch.rpm: OK
    
  3. 更新软件包管理系统以包含 MySQL。

    sudo rpm -iUvh ${RPM_FILE}
    
  4. 安装 MySQL。在安装过程中,请停用 AppStream 代码库,以便安装使用 Community Server。

    sudo yum module disable -y mysql
    sudo yum install -y \
        --disablerepo=appstream \
      mysql-community-server
    
  5. 启动 MySQL 服务器。

    sudo /usr/bin/systemctl start mysqld
    
  6. 从服务器日志获取临时 root 密码

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

提高 MySQL 安装的安全性

如需提高 MySQL 安装的安全性,请运行 mysql_secure_installation 命令。如果在安装过程中未设置密码,请在此步骤中创建密码。如需详细了解此命令,请参阅有关 mysql_secure_installation 的 MySQL 文档。

sudo mysql_secure_installation

连接到 MySQL

以下步骤介绍了如何从 mysql-test 实例连接到 MySQL。

MySQL 8.0

  1. 使用 MySQL 客户端连接到 MySQL。

    sudo mysql -u root -p
    

    连接到 MySQL 时,提示符将更改为 mysql>

    然后,您可以运行 MySQL 命令。例如,以下命令显示了正在运行的线程(包括当前连接)。

    mysql> SHOW processlist;
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    | Id | User            | Host      | db   | Command | Time | State                  | Info             |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    |  5 | event_scheduler | localhost | NULL | Daemon  | 1889 | Waiting on empty queue | NULL             |
    | 14 | root            | localhost | NULL | Query   |    0 | init                   | show processlist |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    2 rows in set (0.00 sec)

    您可以使用以下命令生成用户列表。

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    +------------------+-----------+------------------------------------------------------------------------+
    | User             | Host      | authentication_string                                                  |
    +------------------+-----------+------------------------------------------------------------------------+
    | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | root             | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B            |
    +------------------+-----------+------------------------------------------------------------------------+
    4 rows in set (0.00 sec)
  2. 命令运行完成后,请使用 exit 命令退出 MySQL 客户端,然后再次使用 exit 退出 Compute Engine 实例。

    mysql> exit
    Bye

MySQL 5.7

  1. 使用 MySQL 客户端连接到 MySQL。

    sudo mysql -u root -p
    

    连接到 MySQL 时,提示符将更改为 mysql>

    然后,您可以运行 MySQL 命令。例如,以下命令显示了正在运行的线程(包括当前连接)。

    mysql> SHOW processlist;
    +----+------+-----------+------+---------+------+-------+------------------+
    | Id | User | Host      | db   | Command | Time | State | Info             |
    +----+------+-----------+------+---------+------+-------+------------------+
    | 51 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |
    +----+------+-----------+------+---------+------+-------+------------------+
    1 row in set (0.00 sec)

    您可以使用以下命令生成用户列表。

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    +---------------+-----------+-------------------------------------------+
    | User          | Host      | authentication_string                     |
    +---------------+-----------+-------------------------------------------+
    | root          | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 |
    | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    +---------------+-----------+-------------------------------------------+
    3 rows in set (0.00 sec)
  2. 命令运行完成后,请使用 exit 命令退出 MySQL 客户端,然后再次使用 exit 退出 Compute Engine 实例。

    mysql> exit
    Bye

后续步骤

  • 如需详细了解 MySQL,请参阅 MySQL 官方文档
  • 浏览 Cloud Marketplace 上使用 MySQL 的各种开发技术栈
  • 如果您还要求具备高可用性和可伸缩性,请考虑以下选项:
    • 在 Compute Engine 上安装 MySQL 集群,通过无共享集群和自动分片实现高可用性和可伸缩性。
    • 从 Cloud Marketplace 中一键部署用于 MySQL 集群的开源解决方案 Percona
    • 安装 Vitess,这是一个自 2011 年起为所有 YouTube 数据库流量提供服务的开源解决方案。Vitess 非常适合在容器中运行的应用。如需了解如何在容器化环境中使用 Vitess,请参阅在 Kubernetes 上运行 Vitess