加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

零经验在群晖nas上利用Docker安装mysql详细过程

发布时间:2022-12-13 10:46:20 所属栏目:MySql教程 来源:
导读:  文章目录

  1. 教程目标及适用范围

  本教程皆在完成在群晖DSM系统上利用docker环境安装并配置mysql,并且完成局域网内的客户机远程连接。适用于有在家架设实时数据库想法且想DIY的小白(因为我也是
  文章目录
 
  1. 教程目标及适用范围
 
  本教程皆在完成在群晖DSM系统上利用docker环境安装并配置mysql,并且完成局域网内的客户机远程连接。适用于有在家架设实时数据库想法且想DIY的小白(因为我也是,所以做成了很艰难)。囿于水平有限,书写错误和理解错误在所难免,欢迎各位大佬指教!
 
  2. 准备工作 2.1 硬件环境
 
  注:保证NAS和操作电脑在一个局域网内即可,其他的不需要关心。
 
  2.2 用到的技能
 
  注:不用担心,以下内容不影响安装和配置,只是知其然知其所以然的道理,另外也是自己梳理一下整个过程用到的技能树。
 
  3. 基本思路
 
  第一步:需要在DSM上安装Docker程序。Docker是一个虚拟环境,个人粗浅理解为一个虚拟机(但大神告诉我实际不是,有区别!),在这个环境里可以安装各种程序甚至一个系统;
 
  第二步:在Docker上安装MySQl映像,这个在DSM的图形界面下搜索安装即可;
 
  第三步:配置环境并创建容器运行MySQL,需要进行端口设置(远程访问时的接口)、卷设置(文件在NAS存储位置的映射)、密码设置(访问数据库的密码,通过环境变量设置);
 
  第四步:打开MySQL并修改远程访问权限、加密方式修改(MySQL 8.0版本新特性导致加密方式改变,需在默认数据库修改)
 
  第五步:客户机的远程访问,在windows下通过heidiSQL图形化客户端进行MySQL的访问。
 
  整体过程以附录1群晖 docker 安装 mysql - IT513为指导,只是该博客仅是简略过程记录,没有一些前因后果。实践中的时候遇到了不少问题和不一致的地方,因此我写的会比较详尽,也会将我踩的坑分享出来,避免更多人走弯路。
 
  4.安装配置过程 4.1 安装Docker
 
  在DSM系统打开套件中心,搜索Docker即可找到,默认安装即可。图标见下图:
 
  在这里插入图片描述
 
  4.2 安装MySQL
 
  进入Docker,点击注册表,搜索mysql,如图第一个即是需要安装的mysql,双击该行。
 
  在这里插入图片描述
 
  双击后弹出选择标签栏,指的是需要安装的版本,默认选“latest”为最新版本,本次装的是最新版8.0.13。
 
  在这里插入图片描述
 
  注:8.0以上版本验证方式有改变,若出现本文5.2节错误则需要执行4.4节中需要更改加密方式的操作。
 
  下载安装完成后系统会通知,在Docker的映像一栏中即可看到该映像和大小,如下图:
 
  在这里插入图片描述
 
  4.3 创建容器并运行MySQL
 
  在创建容器前最好在NAS上建立一个Docker共享文件夹;下一级文件夹建立mysql文件夹,对应相应容器;mysql下建立conf、data、logs文件夹,分别用于存储配置文件、数据、错误日志。在创建容器时会用到它们并给对应的映射关系。
 
  接上节,上图中选中mysql并点击启动,进行创建容器的操作界面,容器名称自定,见下图:
 
  在这里插入图片描述
 
  点击高级设置,需要进行如下设置:
 
  设置完成后点击下一步,基本配置情况会显示,如下图是本人初次配置时的情况。
 
  在这里插入图片描述
 
  注:图中本地端口为自动不建议;文件夹/docker/mysql/mysql后一个mysql应为data,个人设置小失误mysql主机名,没有改。
 
  在勾选了“向导完成后运行此容器”下点击应用,容器即启动,DSM系统会有提示,同时在Docker的容器中我们可以看到运行的MySQL。最右边为开关,可以手动停止/启动容器。
 
  在这里插入图片描述
 
  4.4 MySQL的远程配置
 
  在MySQL容器启动后,我们就需要进入该容器并进行MySQL的一些配置,以让它能够在局域网访问。需要以下几个步骤:
 
  1、进入终端机并下载安装vim,用于编辑配置文件
 
  容器启动后双击上图界面红框内区域,点击“终端机–>新增”后下方出现bash,点击可以看到出现了用户及主机名。
 
  在这里插入图片描述
 
  输入以下命令进行vim安装:
 
  apt-get update
 
  apt-get install net-tools
  apt-get install vim
  个人理解:可以看到,一个容器中可以像操作一个linux系统一样,同时有自己的文件系统。
 
  2、登陆MySQL进行远程配置设置
 
  step1 登陆MySQL:mysql -u root -p
 
  step2 输入密码成功后,给root用户远程权限:grant all privileges on *.* to ‘root’@’%’ ;
 
  若MySQL8.0版本以上或出现5.2节2059错误,则需要修改认证方式:
 
  step5 退出MySQL,三种方法:
 
  mysql > exit;
  mysql > quit;
  mysql > \q;
  step6 建立数据库路径及配置权限
 
  参照附录1教程,将下述命令执行即可,但还没搞清和外部的文件配置是否是两种方式混用了。这些命令在root用户下运行。
 
  / 默认目录如下
 
  ├─ /var/lib/mysql 日志文件,数据库文件
 
  ├─ /var/log/mysql/error.log 错误日志 / 最终需要修改的目录
 
  ├─ /home/data 日志文件,数据库文件
 
  ├─ /home/logs/error.log 错误日志
 
  配置目录权限
 
       mkdir  -p /home/data
       mkdir  -p /home/logs
       chown -R mysql:mysql /home/data
       chown -R mysql:mysql /home/logs
       chmod -R 755 /home
       chmod -R 755 /home/data
       chmod -R 755 /home/logs
  #注意 如果上面没有配置home的访问权限,修改了配置后容器是没办法启动的。
 
  #检查访问权限 切换成mysql用户 su - mysql
 
  #在mysql用户里面访问 /home/data目录 cd /home/data
 
  #如果提示 can’t cd to /home/data 则需要返回root用户配置目录权限 chmod -R 755 /home
 
  注1:这里的/home路径指的是容器内的文件系统,跟NAS上的无关!
 
  注2:su -mysql可能会出现报错“No directory, logging in with HOME=/”,解决参见mysql启动报错【No directory, logging in with HOME=/】 - Sp4rkW
 
  注3:命令格式说明
 
  mkdir(新建新目录),命令格式:mkdir [-mp] 目录名称,-m:配置文件夹的权限,-p:帮助你直接将所需要的目录(包含上层目录)递归创建起来。
 
  chown(改变文件所有者),命令格式:chown [-R] 账号名称:组名 文件或目录,-R:进行递归的持续更改。
 
  chmod(改变权限),命令格式:chmod [-R] xyz 文件或目录,-R:进行递归的持续更改;x指拥有者(owner)的权限,y指组(group)权限,z指其他身份(others)权限,r(read)=4,w(write)=2,x(execute)=1,各自权限为累加数字。例如:755表示owner和group身份均有读、写、运行三种权限,而others有读和运行两种权限。
 
  step7 使用vim编辑器修改路径
 
  牵扯到数据库文件和错误日志的路径更改。
 
  打开配置文件 /etc/mysql/my.cnf进行编辑:vim /etc/mysql/my.cnf
 
  将datadir和log-error位置改为新建的目录,保存并退出。随后关闭终端机,在NAS上的所有配置完成。
 
  注:
 
  vim的基本用法,vim有三种模式:一般模式、编辑模式、命令行模式;
 
  在一般模式下,
 
  4.5 客户端访问数据库
 
  在完成了NAS上的mysql环境搭建后,使用windows10电脑通过图形界面进行远程访问。
 
  step1 安装图形界面客户端
 
  图形界面看到的有Navicat Premium、PyCharm、HeidiSQL等工具,多数是可以连接大部分数据库的。推荐安装HeidiSQL,在win10应用商店中就有免费版,容易操作,支持MySQL和SQL Server。
 
  step2 打开并连接数据库
 
  安装好后打开出现会话管理器,网络类型选择TCP/IP下的MySQL,用户root,密码填写容器建立时设置的密码,端口选容器建立时对应容器接口3306的本地接口,我这里是自动分配的32783。如下图:

  双击打开后即可进入,见下图界面,此时整个连接过程全部搞定!!
 
  若连接时出现以下报错见5.1节。
 
  若连接报错如下则见5.2节内容(注:图中端口号是当时为32781而非设置错误):
 
  5. 过程问题总结 5.1 连接报2003错误 - Can’t connect to MySQL server on ‘192.168.31.21’
 
  错误现象: 使用Navicat Premium连接时出现的错误,
 
  此时连接配置如下:
 
  错误原因及解决办法: 检查发现对外端口为32783,mysql默认访问接口为3306,在docker容器配置时容器3306端口映射至对外的32783,因此应该访问32783端口。

  注:确定NAS的3306端口是否已开启的方法:使用SSH服务在电脑命令提示符下进入DSM的控制台,使用命令查询该端口是否存在。远程开启SSH参考附录2。Windows10下访问方法为:。
 
  查询端口是否存在的命令:sudo netstat -tunlp|grep 端口号
 
  上图可以看到,3306端口是没有任何反应的,而32783返回了相关信息,说明32783端口存在,3306端口不存在。*
 
  5.2 连接报2059错误 - Authentication plugin 'caching_sha2_password’cannot be loaded
 
  错误现象: 使用Navicat Premium连接时出现的错误,

  错误原因及解决办法:
 
  查询确定是MySQL新版本验证问题,通过附录3说明解决。我仅修改了root用户的plugin的值,其他的用户没有修改。这里已经用到SQL数据选择还有修改的操作指令。
 
  6.遗留问题 关于附录1教程中数据库中文乱码没有进行设置,还没有遇到;附录1教程中“修改执行文件里面 /etc/init.d/mysql 的datadir 目录:vim /etc/init.d/mysql”,我没有找到这个文件因此没有改。NAS中的文件夹是否给mysql用了还没有搞清楚。如果需要拷贝mysql的数据文件、配置文件和错误日志该怎么办?
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!