1. 程式人生 > 其它 >Docker安裝Mysql和Redis並本地成功連線

Docker安裝Mysql和Redis並本地成功連線

點選關注強哥,檢視更多精彩文章呀

哈嘍,大家好,我是強哥。

最近強哥在學習一個開源專案,由於想要在本地部署專案以便更好的進行專案預研,所以需要在本地搭建專案環境。

專案中有用到MySQL和Redis,可是如果在本地直接安這兩個軟體強哥又覺得很不舒服,機子上有各種各樣的開發軟體以後也不好維護。恰巧,自己機子上安裝了Docker,那為什麼不直接把MySQL和Redis安到Docker上呢?

說幹就幹,這篇文章只是簡單的記錄下Docker安裝MySQL和Redis的步驟方法,可以說是個備忘錄吧。畢竟搭建環境還是可能時不時要用到的,自己實踐好的拿來就用,比較省時間。

安裝Mysql

1、查詢映象

docker search mysql

2、下載映象

選擇自己想要的版本,然後下載映象

docker pull centos/mysql-57-centos7 

3、通過映象建立容器並執行:

# 啟動容器,埠對映到3308,掛載之前的資料卷
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 f83a2938370c  

命令解釋:

  • f83a2938370c為Image ID
  • -d 是說讓我們的容器在後臺執行
  • -e 給新建立的資料庫設定root密碼
  • -p 3306:3306 把所有對宿主機3306埠的tcp報文轉發到容器的3306埠

4、配置外部連線

容器執行起來後,Mysql還不能直接連,需要配置許可權、密碼相關資訊。

//進入容器:
docker exec -it 62349aa31687 /bin/bash

//進入mysql:
mysql -uroot -p123456

//使用mysql庫
mysql> use mysql;

//更新域屬性,'%'表示允許外部訪問:
mysql> update user set host='%' where user ='root';

//重新整理許可權:
mysql> flush privileges;


//授權使用者,你想root使用密碼從任何主機連線到mysql伺服器

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  IDENTIFIED BY 'admin123'  WITH GRANT OPTION;

mysql> flush privileges;


//如果你想允許使用者root從ip為192.168.1.104的主機連線到mysql伺服器

mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.104'  IDENTIFIED BY 'admin123'  WITH GRANT OPTION; 

mysql> flush privileges;

配置完上面的資訊之後,就可以直接在外部連線到Docker中的Mysql容器了

這裡要說明一點,如果使用的是Dbeaver連線的MySQL8的話,如果直接連還會報錯:Public Key Retrieval is not allowed

這時,只需要在Dbeaver中,連線設定->驅動屬性中的allowPublicKeyRetrieval設定成true

之後就能正常連線了:

5、Linux和Windows的區別

對了,強哥在安完Mysql併成功連線後,在使用專案的初始化指令碼時,還遇到一個坑,就是專案的sql指令碼使用的是小寫的表名。會使得專案在初始化的時候報錯:提示表不存在問題:Table 'xxx.QRTZ_LOCKS' doesn't exist。

這時候就要確認mysql資料庫是否區分大小寫。方法:使用show Variables like '%table_names'檢視lower_case_table_names的值,0代表區分,1代表不區分。

LINUX下的MYSQL預設是要區分表名大小寫的 ,而在windows下表名不區分大小寫

所以,如果是Docker安裝的話,肯定就是區分大小寫了,讓MYSQL不區分表名大小寫的方法其實很簡單:

  1. 用ROOT登入,修改/etc/my.cnf
  2. 在[mysqld]下加入一行:lower_case_table_names=1
  3. 重新容器即可

安裝Redis

其實有了上面安裝Mysql的經驗,按差不多的順序安裝Redis就可以了。

1、查詢映象

docker search redis

2、下載映象

選擇自己想要的版本,然後下載映象

docker pull redis

3、執行Redis容器

docker run --name redis -d -p 6379:6379 5d44f444e409  
  • 5d44f444e409為Image ID

4、外部連線

Redis相對沒有Mysql這麼麻煩,還要配許可權什麼的。Redis容器啟動後,直接外部就可以連啦:

當然,./redis-cli這個也是要本地有redis的包才行,可以用Redis-manager測試連線或者寫一段程式碼測試連線效果一樣哈。

寫在最後

其實,這篇文章內容相對來說,沒有太多的技術含量,不過是一篇備忘錄而已。當然,對於強哥這種有點健忘症的人來說,記錄收藏一下,還是挺有用的。有時候往往是最簡單的東西,最容易浪費時間和出錯。尤其是你浪費了一大把時間在與目標無關緊要的東西上時,非常容易讓人惱火。強哥記錄這篇也是有切身經歷的。

整個用Docker安裝軟體的流程就大體這樣,比如之後還要用到其他的一些軟體之類的,其實有Docker真的能方便很多。安裝流程也大體如此,比較簡單。安裝一次Docker之後,便一勞永逸啦,比在本機安裝真的會方便不少。

點選關注強哥,檢視更多精彩文章呀