欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker?中?MySQL?的部署與管理技巧

 更新時(shí)間:2024年08月27日 11:00:50   作者:idealzouhu  
這篇文章主要介紹了Docker?中?MySQL?的部署與管理技巧,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

一、Docker 中部署 MySQL

1.1 部署 MySQL

首先,從 Docker Hub 下載

docker pull mysql:5.7.36

然后,在 Docker 容器中運(yùn)行:

# Linux 系統(tǒng)
docker run --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_HOST='%' \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.36
# Windows 系統(tǒng) (cmd里面運(yùn)行,Windows PowerShell里面運(yùn)行不了)
docker run --name mysql ^
-p 3306:3306 ^
-e MYSQL_ROOT_HOST='%' ^
-e MYSQL_ROOT_PASSWORD=root ^
-d mysql:5.7.36

這個(gè)命令的作用是在后臺運(yùn)行一個(gè) MySQL 5.7.36 版本的容器, 相關(guān)參數(shù)含義解釋:

參數(shù)含義
docker run運(yùn)行容器命令
--name mysql指定容器的名稱為 mysql
-p 3306:3306將宿主機(jī)的 3306 端口映射到容器內(nèi)的 3306 端口
-e MYSQL_ROOT_HOST='%'設(shè)置環(huán)境變量 MYSQL_ROOT_HOST 為 ‘%’,允許 root 用戶從任何主機(jī)連接到 MySQL 服務(wù)。
-e MYSQL_ROOT_PASSWORD=root設(shè)置環(huán)境變量 MYSQL_ROOT_PASSWORD 為 ‘root’,設(shè)置 root 用戶的密碼為 ‘root’
-d在后臺運(yùn)行容器
mysql:5.7.36指定要使用的 Docker 鏡像,即 MySQL 5.7.36 版本的鏡像

如果使用了 -e MYSQL_ROOT_HOST='%', 我們后續(xù)還需要按照 2.1 節(jié)中的教程修改 mysql數(shù)據(jù)庫里面的 user 表。否則,我們用 Navicat 連接數(shù)據(jù)庫會報(bào)錯(cuò) :1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server

當(dāng)我們只在本地上面跑時(shí),沒必要設(shè)置 MYSQL_ROOT_HOST

1.2 進(jìn)入容器并創(chuàng)建數(shù)據(jù)庫

(1) 進(jìn)入容器

mysql 容器里面進(jìn)行數(shù)據(jù)庫創(chuàng)建或者導(dǎo)入數(shù)據(jù)文件前,我們必須進(jìn)入容器

docker exec -it mysql /bin/bash

這個(gè)命令的含義是在名為 mysql 的容器中打開一個(gè)交互式的 bash 終端,相關(guān)參數(shù)解析為:

  • docker exec: 這個(gè)命令允許你在運(yùn)行的容器中執(zhí)行命令。
  • -it: 這兩個(gè)參數(shù)結(jié)合在一起表示要?jiǎng)?chuàng)建一個(gè)交互式的終端。
  • -i 參數(shù)表示保持 STDIN 打開,即使沒有連接到它,-t 參數(shù)表示分配一個(gè)偽終端。
  • mysql: 這是要執(zhí)行命令的容器的名稱或 ID。
  • /bin/bash: 這是要執(zhí)行的命令,在這里是打開一個(gè) bash 終端。

(2)數(shù)據(jù)庫登錄和創(chuàng)建

# 登錄(密碼已經(jīng)在 docker run語句的參數(shù)里面設(shè)置)
# 參數(shù) -u 和其后的用戶名通常之間不需要空格隔開;參數(shù) -p 和其后的密碼也可以直接連在一起寫
mysql -uroot -proot --default-character-set=utf8
# 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE mydatabase
# 退出 MySQL 命令行客戶端
exit

(3)導(dǎo)入數(shù)據(jù)

在導(dǎo)入數(shù)據(jù)之前,我們首先確保 宿主機(jī)中指定路徑下sql 文件是否掛載到在容器里面(docker run 參數(shù)里面可以設(shè)置)。如果沒有掛載的話,我們可以使用 docker cp 命令:

# docker cp 語法
docker cp /本地/路徑/文件.sql 容器名稱或ID:/容器內(nèi)/路徑/
# 舉個(gè)例子
C:\Users\username>docker cp D:\Learning\project\12306\resources mysql:/resources/
Successfully copied 8.22MB to mysql:/resources/

然后,我們在創(chuàng)建的數(shù)據(jù)庫里面導(dǎo)入sql數(shù)據(jù)文件:

# 切換到指定的數(shù)據(jù)庫(在某些情況下,該語句可能以及寫到了sql數(shù)據(jù)文件里面)
use 指定的數(shù)據(jù)庫名;
-- 導(dǎo)入 SQL 文件
source /docker-entrypoint-initdb.d/mydata.sql;

(4)保存 mysql 容器

為了保存更新后的數(shù)據(jù)庫,我們應(yīng)該將容器保存為新的鏡像

注意:在 Docker 中,鏡像是不可更改的。一旦創(chuàng)建了一個(gè)鏡像,就無法直接修改它。因此,無法直接覆蓋原來的鏡像。

docker commit [CONTAINER ID] [IMAGE NAME]   #容器ID  創(chuàng)建的鏡像名
docker images   #可以看到該鏡像已經(jīng)創(chuàng)建成功,下次需要新建容器時(shí)可直接使用該鏡像

舉個(gè)例子,

C:\Users\username>docker commit mysql mysqlcloud
sha256:6953caac5bffdea0a7a867dc5fb483702f8b291e00759940aae8275f28966391
C:\Users\username>docker images
REPOSITORY                      TAG            IMAGE ID       CREATED          SIZE
mysqlcloud                      latest         6953caac5bff   11 seconds ago   457MB
multi-container-app-todo-app    latest         4ce52cba239f   2 months ago     226MB
<none>                          <none>         abc68feda784   2 months ago     226MB
welcome-to-docker               latest         391a7884fcf8   2 months ago     225MB
mongo                           6              6d5c2fe902ad   2 months ago     690MB
docker/welcome-to-docker        latest         c1f619b6477e   4 months ago     18.6MB
zdocker/welcome-to-docker   latest         c1f619b6477e   4 months ago     18.6MB
nacos/nacos-server              v2.1.2         a978644d9246   14 months ago    1.06GB
redis                           latest         7614ae9453d1   2 years ago      113MB
mysql                           5.7.36         c20987f18b13   2 years ago      448MB
pangliang/rocketmq-console-ng   latest         ce1afb55c045   4 years ago      118MB
foxiswho/rocketmq               broker-4.5.1   d45240b3173d   4 years ago      440MB
foxiswho/rocketmq               server-4.5.1   12d0d03473de   4 years ago      440MB

1.3 Navicat 可視化工具連接

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_HOST='%' -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.36 語句中,我們已經(jīng)設(shè)置好了端口號和密碼。因此,Navicat 可視化工具連接中,我們可以這樣填寫信息:

  • 端口 填創(chuàng)建容器時(shí) -p 后的第一個(gè)端口
  • 密碼 填 -e 后寫的密碼

二、可能存在的問題

2.1 1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server

Navicat連接報(bào)錯(cuò) ——1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server

解決方案:解決1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server_host ‘172.17.0.1’ is not allowed to connect to thi

原因分析:

docker run --name mysql ^
-p 3306:3306 ^
-e MYSQL_ROOT_HOST='%' ^
-e MYSQL_ROOT_PASSWORD=root ^
-d mysql:5.7.36

docker run 語句里面,root 對應(yīng)的 Host 為 % 。但是 Mysql 數(shù)據(jù)庫里面沒有,我們重新修改即可。

Host: 表示允許訪問 MySQL 服務(wù)器的主機(jī)名或 IP 地址。

User: 表示用戶的用戶名。

mysql> select Host, User  from user ;
+-----------+---------------+
| Host      | User          |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
3 rows in set (0.00 sec)
mysql> update user set Host='%' where User='root' ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
mysql> select Host, User from user;
+-----------+---------------+
| Host      | User          |
+-----------+---------------+
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
+-----------+---------------+
3 rows in set (0.00 sec)

實(shí)際操作:

-- 顯示所有數(shù)據(jù)庫
mysql> show databases ;
-- 切換到 mysql 數(shù)據(jù)庫
use mysql;
-- 顯示 mysql 數(shù)據(jù)庫中的所有表
show tables ;
-- 查詢 user 表中的 Host 和 User 列
select Host, User from user ;
-- 將 user 表中 User 為 'root' 的記錄的 Host 字段修改為 '%'
update user set Host='%' where User='root' ;
-- 刷新權(quán)限
flush privileges ;

參考資料

docker 安裝mysql,并創(chuàng)建數(shù)據(jù)庫_docker創(chuàng)建mysql數(shù)據(jù)庫

運(yùn)行在docker里面的mysql如何導(dǎo)入數(shù)據(jù)表 

docker部署mysql,使用navicat可視化工具進(jìn)行連接 

到此這篇關(guān)于Docker 中 MySQL 的部署與管理的文章就介紹到這了,更多相關(guān)MySQL 的部署與管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決docker網(wǎng)絡(luò)錯(cuò)誤(network bridge not found)

    解決docker網(wǎng)絡(luò)錯(cuò)誤(network bridge not found)

    這篇文章主要介紹了解決docker網(wǎng)絡(luò)錯(cuò)誤(network bridge not found)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Dockerfile 中 VOLUME 與 docker -v 的區(qū)別說明

    Dockerfile 中 VOLUME 與 docker -v 的區(qū)別說明

    這篇文章主要介紹了Dockerfile 中 VOLUME 與 docker -v 的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker?build與Dockerfile問題

    docker?build與Dockerfile問題

    這篇文章主要介紹了docker?build與Dockerfile問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • docker 移除掉運(yùn)行不正常的container操作

    docker 移除掉運(yùn)行不正常的container操作

    這篇文章主要介紹了docker 移除掉運(yùn)行不正常的container操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker安裝RabbitMq添加用戶實(shí)現(xiàn)方式

    docker安裝RabbitMq添加用戶實(shí)現(xiàn)方式

    這篇文章主要介紹了docker安裝RabbitMq添加用戶實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Docker學(xué)習(xí)筆記之Weave實(shí)現(xiàn)跨主機(jī)容器互聯(lián)

    Docker學(xué)習(xí)筆記之Weave實(shí)現(xiàn)跨主機(jī)容器互聯(lián)

    這篇文章主要介紹了Docker學(xué)習(xí)筆記之Weave實(shí)現(xiàn)跨主機(jī)容器互聯(lián),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Docker Machine創(chuàng)建Azure虛擬主機(jī)

    Docker Machine創(chuàng)建Azure虛擬主機(jī)

    這篇文章主要為大家詳細(xì)介紹了Docker Machine創(chuàng)建Azure虛擬主機(jī)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Windows10系統(tǒng)下Docker默認(rèn)存儲位置更改方案

    Windows10系統(tǒng)下Docker默認(rèn)存儲位置更改方案

    這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下Docker默認(rèn)存儲位置更改方案的相關(guān)資料,在Docker中存儲路徑是一個(gè)重要的話題,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • docker容器如何指定utf-8編碼

    docker容器如何指定utf-8編碼

    這篇文章主要介紹了docker容器如何指定utf-8編碼問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Docker教程:使用容器(簡單示例)

    Docker教程:使用容器(簡單示例)

    今天小編就為大家分享一篇關(guān)于Docker教程:使用容器(簡單示例),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10

最新評論