云市场/应用扩展部署MySQL(Linux)

除了手动方式部署安装MySQL,阿里云也为用户提供了便利的快速安装方式。您可以在新购实例时选择云市场镜像中已预装MySQL服务的实例镜像,云市场镜像也可以在已购买的实例中使用(更换操作系统),本文介绍在Linux系统上通过云市场镜像和应用扩展进行MySQL的部署,包括使用自动化任务和系统运维管理工具快速安装和管理MySQL数据库。

使用云市场镜像部署MySQL数据库

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 实例列表页面,单击创建实例

  5. 自定义购买页面的镜像区域,单击云市场镜像,然后单击从云市场获取更多选择(含操作系统)

    image.png

  6. 镜像市场对话框,选择MySQL镜像。

    1. 在左侧导航栏单击镜像分类 > 数据库

    2. 在搜索框,输入mysql,然后单击搜索

      image

    3. 单击镜像名称,进入镜像详情页,查看镜像相关信息。

      本文中以MySQL8.0数据库 MySQL预装环境(CentOS 7)镜像为例,在镜像详情页面,可获取镜像相关基础信息,在在线文档区域单击MySQL在线文档

      image

    4. 在文档中可获取镜像相关使用指南,镜像安全组配置,以及数据库密码等信息。

    5. 回到镜像选择页面,选择您想要使用的MySQL镜像,单击使用

      重要

      在使用镜像前请务必单击镜像标题进入镜像详情页,获取并仔细阅读镜像信息与使用指南(包括账号密码及开放的安全组等)。

    6. 自定义购买页,镜像区域已自动设置为您购买的镜像。根据页面提示,完成配置项并购买ECS实例。

      image

      配置时需注意:

      • 为实例分配公网IPv4地址。

      • 选择前提条件中已配置的安全组。

      • 其他配置您可以按需选择。具体操作请参见自定义购买实例

  7. 待新建实例状态为运行中后,登录ECS实例查看MySQL服务是否正常;ECS实例连接方式参见使用Workbench工具以SSH协议登录Linux实例

    登录到实例后,运行以下命令检查 MySQL 服务状态。

    sudo systemctl status mysqld

    image

    若返回结果中Activeactive (running),即表示MySQL服务成功启动。其余状态请参见MySQL服务常见状态说明

  8. 远程访问MySQL数据库。

    • 数据库管理工具连接:(推荐)您可以通过阿里云提供的数据管理服务DMS(Data Management Service)来远程访问MySQL数据库。具体操作,请参见相关文档云数据库录入。您也可以通过MySQL客户端远程登录MySQL进行测试。例如:MySQL Workbench、Navicat。

    • MySQL Client连接:以下是使用MySQL Client进行远程访问的详细步骤。

      说明

      为了安全地允许特定用户通过远程地址访问数据库,建议使用非root账户进行MySQL数据库的远程登录。以下示例将展示如何创建新的MySQL账户,以便于远程访问MySQL服务。

      1. 远程连接ECS实例。

        具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

      2. 配置安全组,MySQL 默认使用端口 3306。实例安全组的入方向规则需放通3306端口,如果您配置了其他端口,请根据实际情况进行安全组配置。具体操作请参见添加安全组规则

      3. 运行以下命令后,输入root用户的密码登录MySQL。root用户密码为MySQL服务安全配置步骤配置的密码。

        sudo mysql -uroot -p
      4. 可选择创建新用户进行远程访问或者修改现有用户权限。

        说明

        在本例的SQL语句中:

        • <username>是您希望远程访问的用户名。

        • <password>是该用户的密码。

        • %作为通配符,允许从任何外部主机连接到 MySQL。

        • 运行以下命令,创建新用户。

          -- 创建新用户
          CREATE USER '<username>'@'%' IDENTIFIED BY '<password>';
        • 运行以下命令,更改现有用户远程访问权限。

          ALTER USER '<username>'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';
          UPDATE mysql.user SET Host='%' WHERE User='<username>' AND Host='localhost';
      5. 运行以下命令,确保该用户有权访问所需的数据库。

        GRANT ALL PRIVILEGES ON database_name.* TO '<username>'@'%';
      6. 运行以下命令,刷新权限,以使前述更改生效。

        FLUSH PRIVILEGES;
      7. MySQL命令行界面执行exit退出命令行后,运行以下命令,测试所配置的用户名及密码是否生效。

        mysql -u <username> -p -h <server_ip_address> -P 3306
        • <server_ip_address>是 MySQL 服务器的 IP 地址。

        • -P用于指定端口号(默认是 3306)。

使用扩展程序部署MySQL

前提条件

使用扩展程序部署MySQL时,ECS实例必须满足以下条件:

  • 实例已分配公网IP地址或绑定弹性公网IP(EIP)。具体操作,请参见弹性公网IP

  • ECS实例必须处于运行中状态。

  • 实例操作系统:

    • Ubuntu 20.04、22.04、24.04

    • CentOS 7.7、7.8、7.9

    • Alibaba Cloud Linux 3.2104 LTS

  • ECS实例已安装云助手,并且云助手状态为正常

说明

如果需要多台实例同时安装MySQL服务,您可前往OOS系统运维管理控制台,在左侧菜单选择服务器管理 > 扩展程序,在扩展程序中批量安装MySQL。

操作步骤

  1. 登录ECS管理控制台

  2. 选择需要安装部署MySQL服务的实例,单击实例ID,进入实例详情页。

  3. 在实例详情页面中,单击定时与自动化任务标签页,进入定时与自动化任务配置页面。

    image

  4. 在定时与自动化任务配置栏中,单击安装/卸载扩展程序

    image

  5. 单击安装扩展程序,在弹窗中要安装的扩展程序下拉选框中,搜索MySQL,单击MySQL扩展程序,单击下一步,在确认页面中单击确定执行安装。

    image

  6. 任务状态为已完成时,表示MySQL已安装完成。

    您也可以单击详情,查看任务执行状态。

    image

    image

  7. 远程连接ECS实例。具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  8. 完成MySQL安全策略配置。

    1. 运行以下命令,启动MySQL安全安装向导。

      sudo mysql_secure_installation
    2. 设置 VALIDATE PASSWORD 组件。

      该组件主要用于验证密码的强度,可以帮助提高数据库的安全性,选择是否启用该组件取决于您的安全需求和使用环境。

      可以选择 yY 来启用组件,或者选择其他键跳过这个步骤。启用该组件后,还需要配置密码强度级别。

      image

    3. 当选择启用VALIDATE PASSWORD 组件时,需要根据您对安全性的需求选择适当的密码复杂度级别。

      说明

      密码复杂度级别说明

      • LOW (低):

        • 要求:密码长度至少为 8 个字符。

        • 适用场景:对于密码复杂度要求较低的环境。

      • MEDIUM (中):

        • 要求:密码长度至少为 8 个字符,且必须包含数字、大写和小写字母以及特殊字符。

        • 适用场景:大多数生产环境中推荐使用的级别,具有较好的平衡。

      • STRONG (高):

        • 要求:密码长度至少为 8 个字符,且必须包含数字、大写和小写字母、特殊字符,并且进行字典检测防止使用常见单词。

        • 适用场景:对于安全性要求极高的环境,推荐使用此级别。

      image

      输入所选密码级别之后,根据对应的级别的密码要求,配置对应的密码。注意设置密码时控制台并不直接打印密码,请确保两次输入密码一致。

      image

      配置完成密码后,系统会返回一个密码强度估算值,本例中密码强度估算值为 100,表示您选择的密码在所设置的密码策略下被认为非常强。

      之后系统会要求您确认所提供的密码是否符合您期望的安全策略。这一提示是为了确保您没有错误输入密码或者要验证的密码是否符合先前选择的验证策略。满意则输入Y;不满意密码或想要重新设置则输入n

      image

    4. 输入y移除匿名用户。

      移除匿名用户可以防止未经授权的用户在没有提供有效凭证的情况下访问你的 MySQL 服务器。

      image

    5. 系统会询问是否禁止 MySQL 的 root 用户从远程登录。为了安全起见,通常建议禁止 root 用户远程登录。

      • yY 以禁止远程 root 登录:

        image

      • 如果有特定需求允许 root 用户远程访问(如在受控环境中进行管理),可以按除Y以外任意键以允许远程 root 登录;并采取其他措施来加强安全性(如使用 SSH 隧道或 VPN)。

        image

    6. 输入y移除 MySQL 自带的 test 数据库。

      test 数据库默认情况下允许任何用户访问,为了保证系统的安全且保持良好管理实践,建议删除这个默认数据库。

      image

    7. 输入y重新加载权限表,使之前所有更改生效。

      image

  9. 远程访问MySQL数据库。

    • 数据库管理工具连接:(推荐)您可以通过阿里云提供的数据管理服务DMS(Data Management Service)来远程访问MySQL数据库。具体操作,请参见相关文档云数据库录入。您也可以通过MySQL客户端远程登录MySQL进行测试。例如:MySQL Workbench、Navicat。

    • MySQL Client连接:以下是使用MySQL Client进行远程访问的详细步骤。

      说明

      为了安全地允许特定用户通过远程地址访问数据库,建议使用非root账户进行MySQL数据库的远程登录。以下示例将展示如何创建新的MySQL账户,以便于远程访问MySQL服务。

      1. 远程连接ECS实例。

        具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

      2. 配置安全组,MySQL 默认使用端口 3306。实例安全组的入方向规则需放通3306端口,如果您配置了其他端口,请根据实际情况进行安全组配置。具体操作请参见添加安全组规则

      3. 运行以下命令后,输入root用户的密码登录MySQL。root用户密码为MySQL服务安全配置步骤配置的密码。

        sudo mysql -uroot -p
      4. 可选择创建新用户进行远程访问或者修改现有用户权限。

        说明

        在本例的SQL语句中:

        • <username>是您希望远程访问的用户名。

        • <password>是该用户的密码。

        • %作为通配符,允许从任何外部主机连接到 MySQL。

        • 运行以下命令,创建新用户。

          -- 创建新用户
          CREATE USER '<username>'@'%' IDENTIFIED BY '<password>';
        • 运行以下命令,更改现有用户远程访问权限。

          ALTER USER '<username>'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';
          UPDATE mysql.user SET Host='%' WHERE User='<username>' AND Host='localhost';
      5. 运行以下命令,确保该用户有权访问所需的数据库。

        GRANT ALL PRIVILEGES ON database_name.* TO '<username>'@'%';
      6. 运行以下命令,刷新权限,以使前述更改生效。

        FLUSH PRIVILEGES;
      7. MySQL命令行界面执行exit退出命令行后,运行以下命令,测试所配置的用户名及密码是否生效。

        mysql -u <username> -p -h <server_ip_address> -P 3306
        • <server_ip_address>是 MySQL 服务器的 IP 地址。

        • -P用于指定端口号(默认是 3306)。