Docker 部署 Mysql

一、在注册表中搜索 mysql

二、双击 mysql 选择版本下载

三、在镜像中等待下载完成

四、双击进行创建容器

1. 选择容器网关

  • 这里默认 bridge 即可

2. 常规配置

    1. 进行修改容器名称
    1. 根据实际情况启用资源限制,分配 CPU 优先级与内存大小
    1. 启用自动重启,在镜像非正常关闭后会自动重启,包括 Nas 重启后也会自动启动容器
    1. 配置完毕后点击左下角高级设置

3. 点击高级配置

  • 在环境中新增变量 MYSQL_ROOT_PASSWORD ,对 root 初始化密码进行配置

[!danger]

  1. 如果此时不配置,启动容器后会报错
  2. 注意,初始化时尽量不要使用过于特殊的字符,例如 ' , & , \, / 等,此类字符可能会导致初始化密码错误

4. 配置映射到本地的端口

  • 本地端口是访问 Nas 时输入的端口
  • 容器端口是容器内部 Mysql 服务的端口

从容器外部无法直接访问容器内部服务端口,需要将内部服务端口映射到本地

5. 映射文件夹

  • 点击添加文件夹,在本地创建一个 mysql 目录,选中后点击右下角选择按钮

  • 输入装载路径,这里是指容器内要映射到本地的路径
1
/var/lib/mysql

6. 最后检查配置

检查摘要中的配置是否一致,检查后勾选 向导完后运行此容器 ,并点击完成

五、管理容器

1. 查看容器

启动完成后可以在容器中看到新建的 Mysql 容器

2. 容器详情

  • 双击容器,进入容器详情页面
  • 可以在右下角看到初始化配置的密码

3. 进入终端机

  • 进入终端机,新建一个 终端
  • 进入 bash 后输入 mysql -u root -p
  • Enter password 命令行中输入 mysql 的密码
  • 如果上述步骤结果与下图一致,则说明创建成功

4. 访问

  • 一般而言,在 Docker 中创建的 Mysql 容器不需要配置访问命令,可以直接被别人访问。

六、访问报错

  • 如果你通过其他客户端访问显示 1045 异常:
1
1045 - Access denied for user 'root'@'172.17.0.1' (using password: YES)
  • 并且你的 root 用户已经拥有了 % host 访问权限,则通过一下步骤重置:
  1. 删除当前拥有 % 访问权限的 root 用户
1
2
3
4
delete from user where user='root' and host='%';

-- 先刷新权限,否则当前会不生效
flush privileges;
  1. 创建一个拥有 % 访问权限的 root 用户
1
2
-- 注意要修改密码
create user 'root'@'%' identified with mysql_native_password by 'password';
  1. 授权
1
2
3
4
5
-- 此时即便不授权也是可以访问了,但是没啥权限
grant all privileges on *.* to 'root'@'%' with grant option;

-- 授权后刷新权限
flush privileges;
  • 以上命令如果全部执行成功,再次访问即可成功。

Docker 部署 Mysql
https://blog.pangcy.cn/2023/04/05/服务器运维/群辉Nas/Docker 部署 Mysql/
作者
子洋
发布于
2023年4月5日
许可协议