群輝 docker 安裝 mysql


1. 教程目標及適用范圍
本教程皆在完成在群暉DSM系統上利用docker環境安裝並配置mysql,並且完成局域網內的客戶機遠程連接。適用於有在家架設實時數據庫想法且想DIY的小白(因為我也是,所以做成了很艱難)。囿於水平有限,書寫錯誤和理解錯誤在所難免,歡迎各位大佬指教!

2. 准備工作
2.1 硬件環境
群暉NAS,1台:必須CPU為64位處理器的(DS21Xj、play的就不要想了,之前踩坑),否則Docker在套件中心找不到更不用說安裝了。本人采用DS218+,NAS版本保持更新即可,沒發現版本變化的影響;
電腦,1台:教程適用於windows10系統操作,個人環境為surface pro5,Windows10 家庭版;
網絡配置說明:個人家庭使用電信寬帶,GPON光貓橋接小米路由PRO,路由進行撥號上網,NAS有線連接路由器LAN口,NAS的IP為192.168.31.21,筆記本通過無線連接路由器。

注:保證NAS和操作電腦在一個局域網內即可,其他的不需要關心。

2.2 用到的技能
DSM系統的基本使用,照着NAS安裝配置時的教程上手即可,知道控制面板怎么打開、文件夾怎么維護、程序怎么安裝就好;
注:不用擔心,以下內容不影響安裝和配置,只是知其然知其所以然的道理,另外也是自己梳理一下整個過程用到的技能樹。

Linux基礎操作,一些用到的指令如sudo、chmod、mkdir、chown等;
MySQL的技能操作,怎么配置,怎么啟動,怎么修改數據;
排故時可能需要用到SSH服務進行遠程操控DSM系統。*
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並點擊啟動,進行創建容器的操作界面,容器名稱自定,見下圖:

點擊高級設置,需要進行如下設置:

高級設置中,“啟動自動重新啟動”可選;
卷中文件/文件夾一欄填寫NAS文件夾位置,裝在路徑為mysql下的文件路徑,配置見下圖所示;
端口設置中,本地端口為對外顯示的端口,也就是到時候訪問的端口。容器端口指的是MySQL作為容器的端口,本地端口沒有占用的話推薦設置為和容器端口一致。文章中設為自動並不太好用,重新啟動容器時會變化,導致遠程訪問連不上。
環境變量中,為配置MySQL登陸密碼,增加MYSQL_ROOT_PASSWORD變量,值為密碼。
設置完成后點擊下一步,基本配置情況會顯示,如下圖是本人初次配置時的情況。

注:圖中本地端口為自動不建議;文件夾/docker/mysql/mysql后一個mysql應為data,個人設置小失誤,沒有改。

在勾選了“向導完成后運行此容器”下點擊應用,容器即啟動,DSM系統會有提示,同時在Docker的容器中我們可以看到運行的MySQL。最右邊為開關,可以手動停止/啟動容器。


4.4 MySQL的遠程配置
在MySQL容器啟動后,我們就需要進入該容器並進行MySQL的一些配置,以讓它能夠在局域網訪問。需要以下幾個步驟:
1、進入終端機並下載安裝vim,用於編輯配置文件
容器啟動后雙擊上圖界面紅框內區域,點擊“終端機–>新增”后下方出現bash,點擊可以看到出現了用戶及主機名。

輸入以下命令進行vim安裝:

apt-get update
apt-get install net-tools
apt-get install vim
1
2
3
個人理解:可以看到,一個容器中可以像操作一個linux系統一樣,同時有自己的文件系統。

2、登陸MySQL進行遠程配置設置

step1 登陸MySQL:mysql -u root -p
step2 輸入密碼成功后,給root用戶遠程權限:grant all privileges on *.* to ‘root’@’%’ ;
若MySQL8.0版本以上或出現5.2節2059錯誤,則需要修改認證方式:

step3 查看用戶和加密方式,通過SQL語句:select Host,User,plugin from mysql.user;

注:Host列指指定登陸IP,host = %即為所有ip都有權連接。
step4 更改root用戶的認證方式,老版本使用mysql_native_password,更改plugin項:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';密碼填寫root用戶密碼即可。上圖中root用戶已修改了認證方式。
step5 退出MySQL,三種方法:

mysql > exit;
mysql > quit;
mysql > \q;
1
2
3
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
1
2
3
4
5
6
7
#注意 如果上面沒有配置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有三種模式:一般模式、編輯模式、命令行模式;
在一般模式下,

按i,I,o,O,a,A,r,R任意字母進入編輯模式,左下方顯示“——INSERT——”即為編輯模式,此時鍵盤上除Esc以外均視為輸入。按Esc鍵返回至一般模式;
按“:,/,?”3個中任意一個按鍵,進入命令行模式。該模式提供查找數據的操作、讀取、保存、大量替換字符、離開vim、顯示行號等操作,同樣Esc鍵返回一般模式;
輸入“:wq”即可保存並退出vim。w是保存,q是退出。
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的數據文件、配置文件和錯誤日志該怎么辦?
參考資料
1、群暉 docker 安裝 mysql - IT513
2、群暉DSM教程:開啟遠程SSH和SFTP訪問|藍點網
3、MySQL連接2059報錯問題 - ora_dy
4、Docker 教程 | 菜鳥教程
5、基於群暉系統怎樣高效率使用Docker_百度經驗
————————————————
版權聲明:本文為CSDN博主「木陽live」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lzyy1992/article/details/86256019


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM