如何連接docker中的MySQL容器
連接docker中MySQL容器
我以gin web項(xiàng)目為例,演示在容器中運(yùn)行時(shí)mysql的相關(guān)配置。
1. 登入MySQL修改訪問權(quán)限并刷新權(quán)限。
update user set host = '%' where user = 'root';
grant all on *.* to admin@'%' identified by 'root' with grant option;
允許所有用戶拿著密碼“root”去訪問。
flush privileges;
刷新權(quán)限
2. 修改密碼認(rèn)證配置。
由于docker上MySQL的版本是8.0.19
而我本地MySQL是5.7兩者的認(rèn)證方式不一樣(前者是caching_sha2_password,后者是my_native_password)因此我們對(duì)它進(jìn)行修改。
我修改了所有用戶的密碼認(rèn)證配置后才起效。
3. 至此,我已經(jīng)可以用本地的數(shù)據(jù)庫圖形化界面連接docker中的MySQL容器。
但是在關(guān)聯(lián)運(yùn)行g(shù)in_blog_docker_scrach時(shí)數(shù)據(jù)庫一直拒絕連接:
最后,我查閱資料得知:
在go應(yīng)用中使用localhost或則使用127.0.0.1地址都是無法找msyql服務(wù)的,因?yàn)樵摰刂繁唤馕龀闪水?dāng)前go應(yīng)用docker容器中的ip地址;
修改應(yīng)用配置中的ip地址:
再次運(yùn)行容器:
無錯(cuò)發(fā)生。
大功告成!
docker中MySQL容器啟動(dòng)
一 下拉鏡像
docker pull mysql:5.7
docker images查看鏡像
二 運(yùn)行鏡像
1. 運(yùn)行鏡像,如果不掛載路徑運(yùn)行執(zhí)行以下就可以
docker run -id --name mysql ?-p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
- -i:表示創(chuàng)建并運(yùn)行容器
- -d:表示后臺(tái)運(yùn)行
- -p:映射端口,相對(duì)于訪問宿主機(jī)ip:3306 就是訪問的mysql容器
- -e:配置mysql,這里設(shè)置了一下root密碼,當(dāng)然也可以也又其它設(shè)置選項(xiàng),在這沒用到
- mysql:5.7:鏡像名和版本,如果這個(gè)鏡像不存在會(huì)自動(dòng)下載鏡像
2. 掛載路徑
掛載路徑的好處一是方便我們修改和查看,比如修改mysql配置文件my.cnf,不掛載的話需要進(jìn)入容器然后在修改,my.cnf掛載出來后可以直接在宿主機(jī)查看,日志文件也是同樣的,第二個(gè)好處是防止暑假丟失,如果容器不小心停止刪除了數(shù)據(jù)庫中的所有數(shù)據(jù)就丟失了。
docker run ?-id --name mysql? -v /docker/mysql/log/:/var/log ? -v /docker/mysql/data/:/var/lib/mysql ? -v /docker/mysql/my.cnf:/etc/my.cnf? -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
用了三個(gè)-v,分別掛載出來日志 mysql數(shù)據(jù)和my.cnf,-v 宿主機(jī)文件 容器中文件
直接運(yùn)行上面命令可能啟動(dòng)失敗,需要在宿主機(jī)中先創(chuàng)建一個(gè)my.cnf,即在宿主機(jī)docker/mysql中床新建一個(gè)文件my.cnf文件內(nèi)容為:
[mysqld] # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M skip-host-cache skip-name-resolve datadir=/var/lib/mysql socket=/var/run/mysqld/mysqld.sock secure-file-priv=/var/lib/mysql-files user=mysql ? # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 ? #log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] socket=/var/run/mysqld/mysqld.sock ? !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/
docker ps查看運(yùn)行的容器
使用可視化工具連接mysql測(cè)試
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Docker 下開發(fā) hyperf 完整使用示例
這篇文章主要介紹了詳解Docker 下開發(fā) hyperf 完整使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Jenkins整合Docker實(shí)現(xiàn)CICD自動(dòng)化部署的詳細(xì)過程(若依項(xiàng)目)
本文介紹了如何使用Jenkins和Docker實(shí)現(xiàn)CI/CD自動(dòng)化部署,文章介紹了環(huán)境準(zhǔn)備,包括Jenkins、Docker、JDK、Node和Maven,然后討論了如何配置GitLab環(huán)境并利用Webhooks實(shí)現(xiàn)代碼的自動(dòng)拉取和部署,最后,展示了如何部署前后端分離的項(xiàng)目,并通過實(shí)際操作驗(yàn)證了整個(gè)流程的有效性2024-10-10Docker中的容器網(wǎng)絡(luò)以及其配置說明
這篇文章主要介紹了Docker中的容器網(wǎng)絡(luò)以及其配置說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實(shí)例分析
在本篇文章里小編給大家整理的是關(guān)于Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實(shí)例分析,有需要的朋友們可以參考下。2020-02-02如何Docker化Python Django應(yīng)用程序
今天小編就為大家分享一篇關(guān)于如何Docker化Python Django應(yīng)用程序的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-09-09安裝Docker Desktop報(bào)錯(cuò)WSL 2 installation is incomplete的問題(解決報(bào)錯(cuò))
這篇文章主要介紹了安裝Docker Desktop報(bào)錯(cuò)WSL 2 installation is incomplete的問題,解決方法很簡單只需我們自己手動(dòng)更新一下,我們根據(jù)提示去微軟官網(wǎng)下載最新版的wsl2安裝后即可正常打開,需要的朋友可以參考下2021-06-06