Docker安裝MySQL并使用Navicat連接的使用示例
1. 拉取 MySQL 鏡像
在沒有拉取 MySQL 鏡像之前的鏡像列表:
- 可以通過下面的命令拉取 MySQL 鏡像:
docker pull mysql
這將下載最新版本的 MySQL 鏡像到虛擬機(jī)中。
2. 創(chuàng)建并運(yùn)行一個(gè) MySQL 容器
docker run --name=mysql-test -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123456 -d mysql
參數(shù)說明:
- –name:指定了容器的名稱,方便之后進(jìn)入容器的命令行。
- -itd:其中,i 是交互式操作,t 是一個(gè)終端,d 指的是在后臺(tái)運(yùn)行。
- -p:指在本地生成一個(gè)隨機(jī)端口,用來映射
mysql
的 3306 端口。 - -e:設(shè)置環(huán)境變量。
- MYSQL_ROOT_PASSWORD=root123456:指定了 MySQL 的
root
密碼。 - -d mysql:指運(yùn)行
mysql
鏡像,設(shè)置容器在在后臺(tái)一直運(yùn)行。
運(yùn)行截圖:
【補(bǔ)充知識(shí)】:
在 Docker 中,使用 -e
參數(shù)可以設(shè)置環(huán)境變量。環(huán)境變量是影響容器運(yùn)行時(shí)行為的一些配置值。這些值可以在容器內(nèi)部使用,例如在應(yīng)用程序中訪問數(shù)據(jù)庫(kù)時(shí),可以使用環(huán)境變量來指定數(shù)據(jù)庫(kù)連接信息。
下面是一些使用 -e
參數(shù)運(yùn)行 Docker 容器時(shí)的示例:
設(shè)置單個(gè)環(huán)境變量:
docker run -e VAR_NAME=VAR_VALUE image_name
這將在容器中設(shè)置一個(gè)名為
VAR_NAME
的環(huán)境變量,其值為VAR_VALUE
。設(shè)置多個(gè)環(huán)境變量:
docker run -e VAR1_NAME=VAR1_VALUE -e VAR2_NAME=VAR2_VALUE image_name
這將在容器中設(shè)置兩個(gè)環(huán)境變量
VAR1_NAME
和VAR2_NAME
,分別對(duì)應(yīng)的值為VAR1_VALUE
和VAR2_VALUE
。從環(huán)境變量文件設(shè)置:
docker run --env-file env_file_name image_name
env_file_name
是包含環(huán)境變量鍵值對(duì)的文件。每行應(yīng)該包含一個(gè)鍵值對(duì),例如VAR_NAME=VAR_VALUE
。Docker 將讀取文件中的鍵值對(duì),并在容器中設(shè)置相應(yīng)的環(huán)境變量。
通過設(shè)置環(huán)境變量,可以在容器中配置應(yīng)用程序所需的各種參數(shù),例如數(shù)據(jù)庫(kù)連接字符串、API密鑰等。這樣可以輕松地在不同環(huán)境中部署容器,而無需對(duì)應(yīng)用程序的配置進(jìn)行硬編碼。
3. 驗(yàn)證MySQL容器是否創(chuàng)建并運(yùn)行成功
docker ps
3.1 進(jìn)入 MySQL 容器
docker exec -it mysql-test /bin/bash
3.2 進(jìn)入 MySQL
mysql -uroot -p Enter password:root123456
3.3 查看 host 和 user
select host,user from mysql.user;
- 確保
root
的host
為%
即代表可以遠(yuǎn)程連接。
4. MySQL 開啟遠(yuǎn)程訪問權(quán)限
4.1 切換數(shù)據(jù)庫(kù)
注意:默認(rèn)應(yīng)該就是這個(gè),不切換也行,保險(xiǎn)起見還是切換一下
use mysql;
4.2 給 root 用戶分配遠(yuǎn)程訪問權(quán)限
GRANT ALL PRIVILEGES ON *.* TO root@'%' WITH GRANT OPTION;
參數(shù)說明:
- GRANT:賦權(quán)命令
- ALL PRIVILEGES:當(dāng)前用戶的所有權(quán)限
- ON:介詞
- .:當(dāng)前用戶對(duì)所有數(shù)據(jù)庫(kù)和表的相應(yīng)操作權(quán)限
- TO:介詞
- ‘root’@’%’:權(quán)限賦給
root
用戶,所有 ip 都能連接 - WITH GRANT OPTION:允許級(jí)聯(lián)賦權(quán)
4.3 強(qiáng)制刷新權(quán)限
FLUSH PRIVILEGES;
5. 服務(wù)器配置 3306 的開放端口
在虛擬機(jī)上開放 3306 端口,允許 MySQL 的入站連接,可以使用以下命令通過防火墻允許入站連接:
ufw allow 3306
6. 查看 Ubuntu IP
# 查看 IP 地址 ip addr # 也可以用這個(gè)命令 ifconfig
7. 可能出現(xiàn)的問題
- 可能出現(xiàn)的問題截圖:
- 問題出現(xiàn)原因:
這是因?yàn)?MySQL8 之前密碼加密規(guī)則為 mysql_native_password
,而 MySQL8 之后的加密規(guī)則為 caching_sha2_password
,也就是說,如果要用 Navicat 連接 MySQL,其實(shí)只需要將密碼規(guī)則改回 mysql_native_password
即可;
- 解決辦法如下:
7.1 進(jìn)入 MySQL 數(shù)據(jù)庫(kù)
docker exec -it mysql-test /bin/bash mysql -uroot -p Enter password:root123456
7.2 選擇數(shù)據(jù)庫(kù)
use mysql;
7.3 更改密碼加密方式
IDENTIFIED BY ‘root123456’:連接時(shí)輸入密碼,密碼為 root123456
ALTER USER 'root'@'%' IDENTIFIED BY 'root123456' PASSWORD EXPIRE NEVER;
7.4 更新用戶密碼
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123456';
7.5 刷新權(quán)限
FLUSH PRIVILEGES;
運(yùn)行截圖:
8. Navicat 連接 MySQL 測(cè)試
到此這篇關(guān)于Docker安裝MySQL并使用Navicat連接的使用示例的文章就介紹到這了,更多相關(guān)Docker MySQL并使用Navicat連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Docker安全機(jī)制內(nèi)核安全與容器之間的網(wǎng)絡(luò)安全
這篇文章主要介紹了Docker安全機(jī)制內(nèi)核安全與容器之間的網(wǎng)絡(luò)安全,具有一定參考價(jià)值,需要的朋友可以了解下。2017-09-09使用Docker快速搭建Oracle開發(fā)環(huán)境的方法教程
這篇文章主要給大家介紹了使用Docker快速搭建Oracle開發(fā)環(huán)境的方法教程,文中給出了詳細(xì)的解決方法,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06Mac OSX系統(tǒng) Docker啟用Docker遠(yuǎn)程API功能
這篇文章主要介紹了Mac OSX系統(tǒng) Docker啟用Docker遠(yuǎn)程API功能的相關(guān)資料,需要的朋友可以參考下2016-10-10Docker部署SQL Server 2019 Always On集群的實(shí)現(xiàn)
這篇文章主要介紹了Docker部署SQL Server 2019 Always On集群的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04docker部署crownblog項(xiàng)目到阿里云的方法步驟
這篇文章主要介紹了docker部署crownblog項(xiàng)目到阿里云的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Docker部署Go項(xiàng)目發(fā)布鏡像到倉(cāng)庫(kù)
這篇文章主要為大家介紹了Docker部署Go項(xiàng)目發(fā)布鏡像到倉(cāng)庫(kù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03在Docker中開發(fā)Java 8 Spring Boot應(yīng)用程序的方法
在本文中,我將向您展示如何使用Java 8開發(fā)和運(yùn)行簡(jiǎn)單的Spring Web應(yīng)用程序,而無需在本地計(jì)算機(jī)上安裝Java 8。感興趣的朋友跟隨小編一起看看吧2019-10-10docker搭建redis哨兵集群并且整合springboot的實(shí)現(xiàn)
本文主要介紹了docker搭建redis哨兵集群并且整合springboot的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07詳解在Docker容器中運(yùn)行Spring Boot應(yīng)用
本文將以一個(gè)最簡(jiǎn)單的Spring Boot開發(fā)的Web應(yīng)用為例,講解如何將其容器化運(yùn)行。本文的重點(diǎn)是構(gòu)建Docker鏡像、運(yùn)行Docker容器。2017-06-06