Docker部署MySQL

由于自己測試的時候發(fā)現5.78.0部署不太一樣搏讶,所以這里分2個版本來部署互妓。

docker 部署 MySQL 5.7

直接運行運行一個5.7版本的MySQL

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql57 -d mysql:5.7

MYSQL_ROOT_PASSWORD 指定了 root 的密碼篮撑。

進入容器中纹安,登陸到MySQL毛俏,需要輸入root的登錄密碼幅恋。

docker exec -it mysql57 mysql -uroot -p

看看mysql.user表中的數據

mysql> select Host,User,plugin from mysql.user;
+-----------+---------------+-----------------------+
| Host      | User          | plugin                |
+-----------+---------------+-----------------------+
| localhost | root          | mysql_native_password |
| localhost | mysql.session | mysql_native_password |
| localhost | mysql.sys     | mysql_native_password |
| %         | root          | mysql_native_password |
+-----------+---------------+-----------------------+
4 rows in set (0.00 sec)

可以看到root用戶可以在任意機器進行登陸杏死。

于是在本地使用Sequel Pro嘗試連接

使用Sequel Pro進行遠程連接

可以看到,在5.7版本下可以直接連接上

成功連接

docker 部署 MySQL 8.0

按照5.7版本那樣,直接運行一個8.0版本的MySQL

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql8 -d mysql:8.0

MYSQL_ROOT_PASSWORD 指定了 root 的密碼淑翼。

進入容器中腐巢,登陸到MySQL,需要輸入root的登錄密碼玄括。

docker exec -it mysql8 mysql -uroot -p

看看mysql.user表中的數據

mysql> select Host,User,plugin from mysql.user;
+-----------+------------------+-----------------------+
| Host      | User             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

可以看到MySQL8默認的認證方式是caching_sha2_password冯丙,而在MySQL5.7版本則為mysql_native_password

我們先不做任何改變遭京,直接使用Sequel Pro嘗試連接

使用Sequel Pro進行遠程連接

可以發(fā)現银还,需要caching_sha2_password認證方式登陸,目前的客戶端工具暫時還不支持caching_sha2_password認證方式登陸洁墙。

aching_sha2_password認證報錯

解決方案

目前還沒看到好的解決方案蛹疯。

看到不少博文說

  1. 配置--default-authentication-plugin=mysql_native_password

  2. 兼容新老版本的認證方式

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; #修改加密規(guī)則 
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; #更新一下用戶的密碼 
    FLUSH PRIVILEGES; #刷新權限
    

但是我自己試了這2種方式,仍然無法通過Sequel Pro遠程進行連接热监∞嘞遥看樣子好像是Sequel Pro的問題,并不是MySQL 8的問題孝扛。使用test-build版本的Sequel Pro進行連接就能可以正常連接了列吼。

使用docker-compose進行部署

上面部署都是直接通過docker命令運行一個容器,但是在生產環(huán)境中很少會使用這種方式進行部署苦始,通常都是通過docker stack進行部署的寞钥,docker stack會使用一個yml配置文件來進行部署,所以這里就演示通過docker-compose來部署陌选,那么使用docker stack進行部署時就比較簡單了

version: '3.7'
services:
  db:
    image: mysql:5.7 # 基礎鏡像
    secrets:
      - mysql_root_password # 這里使用了docker的secret機制理郑,防止直接在yml文件中直接暴露root的密碼
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root_password # 通過文件的方式來指定root密碼
      MYSQL_USER: wemeng # 非root的用戶名
      MYSQL_PASSWORD: 123456 # 非root密碼
    ports:
      - 3306:3306 # 暴露的端口
    networks:
      - net # 使用的網絡
    volumes:
      - [你指定的絕路徑]:/var/lib/mysql # mysql的默認數據存放位置是/var/lib/mysql,通過volumn可以持久化mysql的數據
      - [你指定的絕路徑]:/etc/mysql/conf.d # 當 MySQL 服務啟動時會以/etc/mysql/my.cnf為配置文件咨油,本文件會導入 /etc/mysql/conf.d 目錄中所有以 .cnf 為后綴的文件您炉。這些文件會拓展或覆蓋 /etc/mysql/my.cnf 文件中的配置。因此你可以創(chuàng)建你自己需要的配置文件并掛載至 MySQL 容器中的/etc/mysql/conf.d目錄役电。
      - ./init-db:/docker-entrypoint-initdb.d/ # init-db目錄映射到/docker-entrypoint-initdb.d赚爵,那么就可以在改目錄下放一些初始化的sql語句
secrets:
  mysql_root_password:
    file: mysql_root_password.txt # 指定secret的文件
networks:  # 配置網絡
  net:
    ipam:
      config:
        - subnet: 172.28.0.0/16

有了上述配置文件,可以直接通過

docker-compose -f docker-compose.yml up

就可以直接啟動了法瑟,后面會發(fā)布多個服務時冀膝,只需要講services里面再添加其他服務就可以使用docker stack進行部署了

歡迎關注我的公眾號

我的公眾號
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市霎挟,隨后出現的幾起案子窝剖,更是在濱河造成了極大的恐慌,老刑警劉巖氓扛,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枯芬,死亡現場離奇詭異论笔,居然都是意外死亡采郎,警方通過查閱死者的電腦和手機千所,發(fā)現死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒜埋,“玉大人淫痰,你說我怎么就攤上這事≌荩” “怎么了待错?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烈评。 經常有香客問我火俄,道長,這世上最難降的妖魔是什么讲冠? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任瓜客,我火速辦了婚禮,結果婚禮上竿开,老公的妹妹穿的比我還像新娘谱仪。我一直安慰自己,他們只是感情好否彩,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布疯攒。 她就那樣靜靜地躺著,像睡著了一般列荔。 火紅的嫁衣襯著肌膚如雪敬尺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天贴浙,我揣著相機與錄音筷转,去河邊找鬼。 笑死悬而,一個胖子當著我的面吹牛呜舒,可吹牛的內容都是我干的。 我是一名探鬼主播笨奠,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼袭蝗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了般婆?” 一聲冷哼從身側響起到腥,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔚袍,沒想到半個月后乡范,有當地人在樹林里發(fā)現了一具尸體配名,經...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年晋辆,在試婚紗的時候發(fā)現自己被綠了渠脉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡瓶佳,死狀恐怖芋膘,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情霸饲,我是刑警寧澤为朋,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站厚脉,受9級特大地震影響习寸,放射性物質發(fā)生泄漏。R本人自食惡果不足惜傻工,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一霞溪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧精钮,春花似錦威鹿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至臂容,卻和暖如春科雳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脓杉。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工糟秘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人球散。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓尿赚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蕉堰。 傳聞我的和親對象是個殘疾皇子凌净,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內容