docker拉取MySQL8.0鏡像以及安裝的完整步驟
一、docker安裝MySQL鏡像
搜索images
docker search mysql
我配置了阿里云鏡像加速器,找不到mySQL鏡像.
由于不知道名原因很多國內(nèi)拉取鏡像都下架了docker鏡像導(dǎo)致找不到MySQL鏡像;
拉取MySQL鏡像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0
拉取MySQL鏡像成功。
二、數(shù)據(jù)掛載
創(chuàng)建本地目錄用于掛載mysql數(shù)據(jù)和配置
mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf
在/root/mysql/conf中創(chuàng)建 *.cnf 文件
touch my.cnf
創(chuàng)建容器,將數(shù)據(jù),日志,配置文件映射到本機(jī)
docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yourpassword -d swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0
docker run
:這是創(chuàng)建新容器的 Docker 命令。-p 3306:3306
:這將容器內(nèi)部的 MySQL 服務(wù)端口(3306)映射到宿主機(jī)的同一端口,允許您從宿主機(jī)或其他網(wǎng)絡(luò)中的機(jī)器訪問 MySQL 服務(wù)。--name mysql
:這為新容器指定了一個(gè)名稱,這里是mysql
。-v /root/mysql/conf:/etc/mysql/conf.d
:這將宿主機(jī)上的/root/mysql/conf
目錄掛載到容器內(nèi)部的/etc/mysql/conf.d
目錄,用于存儲(chǔ) MySQL 配置文件。-v /root/mysql/logs:/logs
:這將宿主機(jī)上的/root/mysql/logs
目錄掛載到容器內(nèi)部的/logs
目錄,用于存儲(chǔ) MySQL 日志文件。-v /root/mysql/data:/var/lib/mysql
:這將宿主機(jī)上的/root/mysql/data
目錄掛載到容器內(nèi)部的/var/lib/mysql
目錄,用于存儲(chǔ) MySQL 數(shù)據(jù)文件。這確保了數(shù)據(jù)的持久化,即使容器被刪除,數(shù)據(jù)也不會(huì)丟失。-e MYSQL_ROOT_PASSWORD=
yourpassword:這設(shè)置了環(huán)境變量,用于定義 MySQLroot
用戶的密碼。請確保使用一個(gè)強(qiáng)密碼來提高安全性。-d swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0
:這指定了容器應(yīng)在后臺(tái)運(yùn)行,并使用指定的 MySQL 鏡像。這里的鏡像路徑指向華為云 SWR 上的 MySQL 8.0 鏡像.
檢查MySQL是否啟動(dòng)成功:
docker ps -a
三、DBeaver數(shù)據(jù)庫連接
連接DBeaver常見的報(bào)錯(cuò):
問題一、Public Key Retrieval is not allowed
問題圖片:
原因:
Public Key Retrieval is not allowed:原因是:通常出現(xiàn)在使用 SSL 連接到 MySQL 數(shù)據(jù)庫時(shí)。這個(gè)錯(cuò)誤表明 MySQL 服務(wù)器配置為要求 SSL 連接,但是客戶端(在這種情況下是 DBeaver)沒有提供正確的證書或密鑰。
處理:
找到:allowPublicKeyRetrieval驅(qū)動(dòng)屬性,把false改為true,如圖所示:
再次連接:
問題二、連接MySQL時(shí),報(bào)Access denied for user
報(bào):ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
意味著您嘗試使用MySQL的root用戶登錄,但是提供的密碼不正確,或者root用戶沒有從localhost登錄的權(quán)限。
步驟 1:確保您使用的是正確的密碼
確認(rèn)您記得的root密碼是正確的。如果您不確定密碼是否正確,您可能需要重置它。
在你保證密碼正確情況下,如果出現(xiàn)這個(gè)錯(cuò)誤,可能原因是:之前你執(zhí)行docker掛載MySQL容器,在/root/mysql/data下已經(jīng)有之前緩沖數(shù)據(jù),執(zhí)行的新docker run,由于兩次掛載MySQL容器密碼不一致,導(dǎo)致登錄不成功。
解決方案:刪除/root/mysql/data目錄下文件,執(zhí)行刪除docker掛載MySQL容器后,然后執(zhí)行docker run 掛載MySQL容器;
進(jìn)入容器中的 MySQL:
docker exec -it mysql mysql -u root -p
輸入密碼:*********
步驟 2:嘗試無密碼登錄(如果root賬戶沒有設(shè)置密碼)
如果root賬戶沒有設(shè)置密碼,或者您不確定是否設(shè)置了密碼,可以嘗試無密碼登錄:
在/root/mysql/conf目錄下,打開my.cnf配置,加上:
--skip-grant-tables
這里不做過多解釋,如需詳情了解操作,各位自行百度一下;
步驟3: root用戶沒有從localhost登錄的權(quán)限
進(jìn)入容器中MySQL:
docker exec -it mysql mysql -u root -p
輸入密碼:*******,登錄到 MySQL 后,
更改密碼:
使用以下命令更改 root
用戶的密碼:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
new_password:輸入自己的密碼;
允許 root 用戶從任何 IP 地址連接:
ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';
替換 'new_password'
為您想要設(shè)置的新密碼。
刷新權(quán)限:
更改密碼后,執(zhí)行以下命令使更改生效:
FLUSH PRIVILEGES;
退出 MySQL:
使用以下命令退出 MySQL 客戶端:
EXIT;
測試新密碼:
為了驗(yàn)證新密碼是否生效,您可以嘗試再次登錄 MySQL:
docker exec -it mysql mysql -u root -p
當(dāng)提示時(shí),輸入您新設(shè)置的密碼。
請注意,將密碼直接包含在命令行中(如 -p'new_password'
)可能會(huì)因?yàn)橐?hào)使用不當(dāng)而導(dǎo)致問題。通常建議在命令行中只使用 -p
參數(shù),然后在提示時(shí)輸入密碼。
使用連接MySQL工具連接服務(wù)器MySQL:
驗(yàn)證用戶身份的插件名稱
SELECT user, host, plugin FROM mysql.user
mysql_native_password:作為MySQL之前的默認(rèn)身份驗(yàn)證插件,很多老版本的客戶端和工具默認(rèn)支持這個(gè)插件。因此,對于一些舊的應(yīng)用程序和庫,mysql_native_password
可能會(huì)有更好的兼容性。
caching_sha2_password:從MySQL 8.0開始,它成為了默認(rèn)的身份驗(yàn)證插件。盡管它提供了更高的安全性,但一些舊版客戶端可能不支持該插件。在這種情況下,需要更新客戶端或驅(qū)動(dòng)程序才能兼容。
四、刪除docker鏡像MySQL
查找鏡像
docker images | grep mysql
刪除鏡像
一旦您知道了要?jiǎng)h除的 MySQL 鏡像的名稱或 ID,可以使用以下命令刪除它:
docker image rm 1eba4c9bcaa8
強(qiáng)制刪除命令:docker image rm -f mysql
五、docker刪除容器
暫停正在運(yùn)行MySQL容器
docker stop 343ee69c170d
刪除MySQL容器
docker rm 343ee69c170d
注意:343ee69c170d是docker中MySQL容器ID;
總結(jié)
到此這篇關(guān)于docker拉取MySQL8.0鏡像以及安裝的文章就介紹到這了,更多相關(guān)docker拉取MySQL8.0鏡像及安裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫給表添加索引的實(shí)現(xiàn)
在MySQL中,索引是用來加速數(shù)據(jù)庫查詢的一種特殊數(shù)據(jù)結(jié)構(gòu),當(dāng)我們需要查詢數(shù)據(jù)庫中某些數(shù)據(jù)的時(shí)候,如果數(shù)據(jù)庫中有索引,就可以避免全表掃描,從而提高查詢速度,本文就介紹了如何給表添加索引,感興趣的可以了解一下2023-08-08MySQL將時(shí)間戳轉(zhuǎn)換為年月日格式的實(shí)現(xiàn)
在我們的項(xiàng)目開發(fā)過程中,經(jīng)常需要將時(shí)間戳或日期時(shí)間字段轉(zhuǎn)換為特定的格式,本文主要介紹了MySQL將時(shí)間戳轉(zhuǎn)換為年月日格式的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08