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