如需在您创建的 Compute Engine 实例上手动安装 MySQL,请完成以下步骤。
如需简要了解在 Compute Engine 上设置 MySQL 的几种方法,请参阅 Compute Engine 上的 MySQL。如需了解哪些 Compute Engine 产品适用于 MySQL,请参阅在 Compute Engine 上配置 MySQL。
准备工作
- 使用 Google Cloud 控制台启用 Compute Engine API。
- 安装 Google Cloud CLI
配置工作区,使命令更简洁。将以下命令中的 PROJECT_ID、REGION 和 ZONE 替换为项目的值。如需地区的完整列表,请参阅可用区域和地区。
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 实例,请执行以下操作:
在 Google Cloud 控制台中,前往 Compute Engine 虚拟机实例页面。
选择新建的项目,然后点击继续。
点击创建实例(如果您具有现有实例,则点击新建实例)。将实例命名为 mysql-test。
如需指定非默认操作系统,请在启动磁盘部分中点击更改以配置启动磁盘的属性。在公共映像标签页中,选择操作系统,然后点击保存。
为了符合安全性最佳做法,请在不使用外部 IP 地址的情况下创建实例。
展开高级选项,然后展开网络。在网络接口下,展开默认接口,然后在外部 IPv4 地址菜单中,选择无。
点击创建。
设置网络地址转换
如需使用 Cloud NAT 设置和管理网络地址转换,请执行以下操作:
在 Google Cloud 控制台中,前往 Cloud NAT 页面。
点击开始使用或创建 Cloud NAT 网关。
对于网关名称,输入
nat-simple-configuration
。如需选择 Cloud Router 路由器,请在选择 Cloud Router 路由器部分中执行以下操作:
- 对于网络,选择 default。
- 对于区域,选择您为虚拟机指定的区域。
对于 Cloud Router,选择创建新路由器。
在随即显示的创建路由器对话框中,为路由器提供名称(例如
nat-router-simple-configuration
),然后点击创建。
点击高级配置。
在日志记录部分中,选择转换和错误。此设置会将 Cloud NAT 配置为将所有日志发送到 Cloud Logging。
点击创建。
与虚拟机建立 SSH 连接
如需建立 SSH 连接,请执行以下操作:
在虚拟机实例页面上的列表中查找新虚拟机实例。
在该虚拟机的连接列中,点击 SSH。SSH 终端随即在浏览器窗口中打开。
gcloud
如需创建 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
创建 Cloud Router 路由器。
gcloud compute routers create nat-router-simple-configuration \ --network=default
使用 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
使用
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
命令手动安装。
安装
wget
依赖项。sudo apt-get install -y wget
下载 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}
验证版本软件包文件的完整性。
cat > ${DEB_FILE}.md5 << EOL 799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
如果您看到以下输出,则表示验证了文件的真实性和完整性:
mysql-apt-config_0.8.20-1_all.deb: OK
验证文件后,将 MySQL 软件包添加到本地软件包代码库。
sudo dpkg -i ${DEB_FILE}
系统会提示您确认安装选项,包括 MySQL 版本。
选择顶部的 MySQL 服务器和集群菜单选项后,按返回,然后使用箭头键选择服务器版本。
本指南建议您选择 MySQL 8.0 或 5.7。选择版本后,按键盘上的 Return 键。
如果对配置菜单中选择的选项感到满意,请使用箭头键选择菜单中的
Ok
,然后按键盘上的 Return 键。更新软件包缓存。
sudo apt-get update
如果您收到 GPG 错误(类似于由于公钥不可用,无法验证以下签名:NO_PUBKEY 467B942D3A79BD29),请使用以下格式的命令导入缺失的 GPG 密钥:
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
在演示性错误消息中,缺失的公钥为
467B942D3A79BD29
;请使用--recv-keys
选项提供此值。重复该命令以更新软件包缓存。
安装 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,请按照以下说明操作:
下载 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}
验证版本软件包文件的完整性。
cat > ${DEB_FILE}.md5 << EOL 9e393c991311ead61dcc8313aab8e230 ${DEB_FILE} EOL md5sum --check ${DEB_FILE}.md5
如果您看到以下输出,则表示验证了文件的真实性和完整性。
mysql-apt-config_0.8.17-1_all.deb: OK
验证文件后,将 MySQL 软件包添加到本地软件包代码库。
sudo dpkg -i ${DEB_FILE}
系统会提示您确认安装选项,包括 MySQL 版本。
选择顶部的 MySQL 服务器和集群菜单选项后,按返回,然后使用箭头键选择服务器版本。
本指南建议您选择 MySQL 8.0 或 5.7。选择版本后,按键盘上的 Return 键。
如果对配置菜单中选择的选项感到满意,请使用箭头键选择菜单中的
Ok
,然后按键盘上的 Return 键。更新软件包缓存。
sudo apt-get update
如果您收到 GPG 错误(类似于由于公钥不可用,无法验证以下签名:NO_PUBKEY 467B942D3A79BD29),请使用以下格式的命令导入缺失的 GPG 密钥:
sudo apt-key adv \ --keyserver keyserver.ubuntu.com \ --recv-keys 467B942D3A79BD29
在演示性错误消息中,缺失的公钥为
467B942D3A79BD29
;请使用--recv-keys
选项提供此值。重复该命令以更新软件包缓存。
安装 MySQL。此过程会启动 MySQL 服务。
sudo apt-get -y install mysql-community-server
Ubuntu
对于 Ubuntu 1804 及更早版本,请按照以下说明安装 MySQL 5.7。
对于 Ubuntu 2004 及更高版本,请按照以下说明安装 MySQL 8。
更新
apt-get
软件包管理系统。sudo apt-get update
安装 MySQL。此过程会启动 MySQL 服务。
sudo apt-get -y install mysql-server
默认情况下,在 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 | +------+-----------------------+-------------+-----------+
更改此设置,并将 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,您必须先更新软件包管理系统。
下载 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}
验证版本软件包文件的完整性。
cat > ${RPM_FILE}.md5 << EOL 8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
如果您看到以下输出,则表示验证了文件的真实性和完整性。
mysql80-community-release-el7-4.noarch.rpm: OK
更新软件包管理系统以包含 MySQL。
sudo rpm -Uvh ${RPM_FILE}
安装 MySQL。
sudo yum -y install mysql-community-server
启动 MySQL 服务器。
sudo /usr/bin/systemctl start mysqld
从服务器日志获取临时 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,您必须先更新软件包管理系统。
下载 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}
验证版本软件包文件的完整性。
cat > ${RPM_FILE}.md5 << EOL 0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE} EOL md5sum --check ${RPM_FILE}.md5
如果您看到以下输出,则表示验证了文件的真实性和完整性。
mysql80-community-release-el8-2.noarch.rpm: OK
更新软件包管理系统以包含 MySQL。
sudo rpm -iUvh ${RPM_FILE}
安装 MySQL。在安装过程中,请停用 AppStream 代码库,以便安装使用 Community Server。
sudo yum module disable -y mysql sudo yum install -y \ --disablerepo=appstream \ mysql-community-server
启动 MySQL 服务器。
sudo /usr/bin/systemctl start mysqld
从服务器日志获取临时 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
使用 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)
命令运行完成后,请使用
exit
命令退出 MySQL 客户端,然后再次使用exit
退出 Compute Engine 实例。mysql> exit
Bye
MySQL 5.7
使用 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)
命令运行完成后,请使用
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。