群晖部署MySQL数据库过程记录
docker-compose方式搭建 mysql
我在使用群晖的container Manager(群晖7.x及以前的版本为docker) 搭建Mysql 数据库时遇到很多问题,各种报错。
正常来讲,简单container Manager图形交互界面动动鼠标就能搭建好的
具体可以参考这篇教程:
群晖NAS中使用Docker安装MySQL数据库、
但我跟着教程步骤,初始化运行后总是失败,mysql 容器闪退
其中有这样的error log:
![[Mysql] 群晖7.21 部署MySQL数据库,第1张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第1张](/upload/website_attach/202404/1_NCHHHJSXMNN86G6V.jpeg)
分析及查询网上分享解决方案都试过了,却没有得到解决。
参考解决方案:
黑群晖里面docker安装mysql8报错处理
快速解决Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) ";
我尝试解决,浪费了5个多小时的生命却失败了
没有办法,只能用到我为数不多的命令行终端部署技能使用docker-compose 来搭建
安装docker我就不细说了,我们只需要提前准备好docker-compose.yaml文件,及安装的文件夹。
在共享文件夹的docker文件夹中新建mysql文件夹,在mysql文件夹新建mysql、mysqlBacker文件夹,并放入我们提前写好的docker-compose.yaml文件
docker-compose.yaml文件内容:
version: "3"
services:
mysql:
image: mysql:8.1.0
container_name: mysql-test #容器名称,自定义更改
restart: on-failure:3
networks:
mysql_default:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306:3306" #端口,自定义更改,比如3307:3306. 后期就可以在sql工具中使用3307端口访问了
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,对应root 用户的登录密码
- MYSQL_ROOT_PASSWORD=123456 #自定义,建议更改,登录需要用到
- MYSQL_DATABASE=main #建的数据库名,自定义更改
networks:
mysql_default:
我们打开docker程序,在项目一栏中新建新的项目
项目命名自定义,文件路径我们就选择刚刚创建的mysql文件夹
![[Mysql] 群晖7.21 部署MySQL数据库,第3张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第3张](/upload/website_attach/202404/1_QZB4NYXQ35VXGWYE.jpeg)
设置项目路径后,会提示你使用存在的.yaml配置文件,我们确认就好了
![[Mysql] 群晖7.21 部署MySQL数据库,第4张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第4张](/upload/website_attach/202404/1_KTCZ27BP2AMNNA6H.jpeg)
接着一路点击 ‘下一步就行‘
![[Mysql] 群晖7.21 部署MySQL数据库,第5张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第5张](/upload/website_attach/202404/1_CJXADCCBRVJGPCRC.jpeg)
在弹出的终端界面看到 Exit Code: 0 命令,则代表着,mysql 搭建并启动成功了
![[Mysql] 群晖7.21 部署MySQL数据库,第6张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第6张](/upload/website_attach/202404/1_NN7KFV8WVAM6QZXA.jpeg)
在容器中选择刚创建的 mysql 容器,并打开终端机
![[Mysql] 群晖7.21 部署MySQL数据库,第7张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第7张](/upload/website_attach/202404/1_QWJZ95UPMV5NA3JJ.jpeg)
新增bash窗口,(提示输入命令的话,我们输入“/bin/bash”)
![[Mysql] 群晖7.21 部署MySQL数据库,第8张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第8张](/upload/website_attach/202404/1_UT9HSDV8MEFHARKF.jpeg)
命令行输入框中输入: mysql -u root -p
输入密码,回车
![[Mysql] 群晖7.21 部署MySQL数据库,第9张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第9张](/upload/website_attach/202404/1_5JFXNXGGHC2RGQED.jpeg)
当出现 mysql>, 代表已经连接上MySQL了。
![[Mysql] 群晖7.21 部署MySQL数据库,第9张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第9张](/upload/website_attach/202404/1_5JFXNXGGHC2RGQED.jpeg)
初始化失败
可能之前创建在mysql文件夹中创建过mysql容器
路径docker/mysql/mysql中存在旧数据,
解决:
我们删除mysql文件夹,重新创建mysql文件夹一次
![[Mysql] 群晖7.21 部署MySQL数据库,第11张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第11张](/upload/website_attach/202404/1_KSD6DUN8FCFZY6CN.jpeg)
接着重新构建mysql项目
![[Mysql] 群晖7.21 部署MySQL数据库,第12张 [Mysql] 群晖7.21 部署MySQL数据库,在这里插入图片描述,第12张](/upload/website_attach/202404/1_24MFMR7SHXMN5CZS.jpeg)
内网访问mysql 连接失败
解决
检查网络防火墙、端口、端口映射是否正确
外网使用工具远程连接数据库失败
MySQL的内部网络访问控制是默认配置,即只允许内部网络访问MySQL数据库,防止来自外部网络的攻击。MySQL主要是通过配置配置文件/etc/mysql/my.cnf来实现内部访问控制。
默认情况下,MySQL只允许本机的IP访问
解决
配置my.cnf 文件,实现外网访问mysql.
教程: 如何实现 MySQL 的外部访问?(mysql外部访问)
教程适用的mysql 版本为8.+,mysql 5.x版本构建存在明显差异。
我这里给到搭建mysql 5.x 的参考教程:
通过 docker-compose 快速部署 MySQL保姆级教程
使用docker-compose部署mysql单节点