Docker 应用安装脚本

install_mysql57_base_docker.sh

一个托管在 helper.sh 的脚本,会创建 /data/mysql5.7 目录结构、写入基础 MySQL 5.7 配置、拉取 mysql:5.7.44,并以宿主机挂载目录的方式启动容器。

一键命令

curl -fL 'https://www.helper.sh/install_mysql57_base_docker.sh' -o './install_mysql57_base_docker.sh'

此命令只下载本站文件,不会执行。请先检查保存的源码并核对版本,再决定是否运行。

核对已下载文件

与本页面构建时内置的确切字节比较。文件只在当前标签页处理,此工具不上传、不持久化文件。上限 2 MiB。

预期 SHA-256
6d16610c307e30338e693a6cfdbf6d86ffa85e6260b7407346ae3ca1bddf9ef3

内置文件字节数: 6038

保存校验文件

将脚本和校验文件保存在同一目录。Linux 安装 GNU Coreutils 后可用下方命令只检查字节,不运行脚本;使用此命令时需保留原文件名。

sha256sum --check './install_mysql57_base_docker.sh.sha256'

尚未比较。

校验值与脚本来自同一网站,不是独立签名。一致不证明安全、上游依赖真实可信或适合本机;可变远程依赖需单独审阅。

查看验证与限制

运行要求

  • Linux 主机
  • Docker 已安装并运行
  • 需要 root 权限或 sudo
  • 3306 端口可用
  • /data 目录可写

适用场景

  • 在已经具备 Docker 环境的主机上快速拉起一个 MySQL 5.7 实例
  • 把 MySQL 数据、配置和初始化 SQL 统一保存在 /data/mysql5.7 下
  • 为仍然依赖 MySQL 5.7 的老项目提供标准化的一键安装入口

脚本亮点

  • 自动创建 /data/mysql5.7/data、conf.d 和 init
  • 拉取 mysql:5.7.44 并以可自动重启的容器方式运行
  • 如果没有提供 root 密码,会自动生成强密码
  • 支持可选的初始数据库、用户和密码初始化

推荐流程

  1. 先确认 Docker 已安装可用,且宿主机的 3306 端口没有被占用。
  2. 使用 sudo 或 root 执行 helper.sh 提供的一键命令。
  3. 等待脚本准备 /data/mysql5.7、拉取 mysql:5.7.44,并创建数据库容器。
  4. 把输出中的 root 密码和可选初始化用户信息记录下来,再交给业务侧使用。

安全提示

  • 不要在没有网络访问控制的情况下把 MySQL 5.7 直接暴露到公网。
  • 如果使用了自动生成的 root 密码,请立刻记录保存。
  • 如果这是生产实例,替换或重建容器前请先备份 /data/mysql5.7。

兼容范围与限制

  • 需要 Linux、systemd、Docker 和 root 权限;默认使用宿主机 3306 端口。镜像固定为 mysql:5.7.44,应视作旧应用兼容示例。
  • 脚本接受 --data-dir、--container-name、--port、--root-password、--database、--user 和 --password;也读取 MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD 环境变量。没有 dry-run 或备份。
  • 脚本会发布所选宿主机端口;Docker 的端口发布可能绕过部分主机防火墙规则。没有经过审查的网络访问控制时,不要暴露 MySQL。密码会作为 Docker 环境参数传入、保存在可检查的容器配置中,并由脚本打印;避免写入 Shell 历史或共享日志。

受影响的文件、服务和数据

  • 创建 /data/mysql5.7/data、conf.d 和 init。仅在 mysql57.cnf 不存在时写入;已有数据和配置会复用。
  • Docker 未运行时会启动它,拉取 mysql:5.7.44;若同名容器已存在,会强制删除后创建新的自动重启容器,并挂载宿主机目录、发布端口。
  • 删除旧容器不会删除宿主机 bind mount 数据目录;但脚本在复用前不会备份数据。

只读核验

  • 以下示例使用默认容器名 mysql57;若修改了 --container-name,请替换该值。检查 `docker ps --filter name=mysql57` 和 `docker logs --tail 100 mysql57`。
  • 用 `docker inspect mysql57 --format '{{json .HostConfig.PortBindings}} {{json .Mounts}}'` 检查端口映射和挂载。
  • 运行 `docker exec -it mysql57 mysqladmin ping -h 127.0.0.1 -uroot -p` 和 `docker exec -it mysql57 mysql -uroot -p -e 'SELECT VERSION();'`;在提示符中输入密码。

失败后的下一步

就绪检查失败时查看容器日志、磁盘空间、所选数据目录和凭据。重试前先保全宿主机数据;即使健康检查只给出警告,脚本最后仍可能输出“completed”。

先下载、审阅并核对版本,再决定是否执行。哈希只能标识这一版字节,不能证明安全。pipe 命令会立即执行远程内容;上游依赖也可能变化。

相关专题

Ubuntu:准备 Docker 或 VPN 接入

区分主机安装、客户端接入和已有 Docker 服务,不把旧应用镜像作为新栈默认选择。

查看专题

Docker 服务:检查接口和保留状态

按协议、数据目录和替换影响区分 HTTP、SQL、缓存、FastCGI 或镜像内应用。

查看专题

问题页面

为什么重建 MySQL 5.7 容器后旧密码仍然有效

安装脚本重建 mysql57 时会继续挂载 /data/mysql5.7/data。MySQL 只会在数据目录为空时初始化账号,因此已有数据库不会因安装变量变化而重置凭据。

打开页面