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

docker部署mysql?9.0.1的實現(xiàn)

 更新時間:2025年02月24日 10:09:52   作者:灰色人生qwer  
本文主要介紹了docker部署mysql?9.0.1的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

docker 如何部署 mysql 9 ,請看下面步驟:

1. 先看 mysql 官網(wǎng)

在這里插入圖片描述

先點進去 8 版本的 Reference Manual 。

在這里插入圖片描述

選擇 9.0 版本的。

在這里插入圖片描述

點到這里來看, 這里有一些基礎的安裝步驟,可以看一下。 - Basic Steps for MySQL Server Deployment with Docker。

在這里插入圖片描述

有關使用 Docker 部署 MySQL Server 的更多主題,例如 服務器配置, 持久保存數(shù)據(jù)和配置, 服務器 錯誤日志和容器環(huán)境變量,請參閱 第 2.5.6.2 節(jié) “有關使用 Docker 部署 MySQL 服務器的更多主題”。

在這里插入圖片描述

docker run --name=mysql1 \
--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \
-d container-registry.oracle.com/mysql/community-server:tag

OK, 上面是官網(wǎng)的教程,接下來寫上我自己的實操。

1. 首先我們要做下載 mysql 9.0.1 的鏡像

docker pull mysql:9.0.1

2. 然后運行創(chuàng)建 mysql 容器

docker run -d \
--name mysql9 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
mysql:9.0.1

查看 mysql 是否正常啟動:

docker ps

可以看到已經(jīng)正常啟動了。

在這里插入圖片描述

3. 但我們的目標是要實現(xiàn)掛載mysql的 配置文件 到宿主機以便于修改 和 持久化 mysql 的數(shù)據(jù)。所以我們要先將 mysql 的 配置文件從容器中拷貝出來。

那么, mysql 9 的配置文件在哪呢?

我們從 dockerhub 倉庫中可以看到 mysql 的配置文件在 /etc/mysql/my.cnf 。但是,你進去 mysql 9 的容器中會發(fā)現(xiàn) 這個路徑找不到 my.cnf 文件。

在這里插入圖片描述

其實 mysql 官網(wǎng)已經(jīng)提到了, 在 /etc/my.cnf 。

在這里插入圖片描述

OK,既然知道了配置文件的路徑,那就拷貝出來。

先在宿主機中創(chuàng)建下面文件夾用于存放 mysql 9 的配置文件 以及 將來要存儲 mysql 的數(shù)據(jù)目錄。

mkdir -p /mydata/mysql/conf  /mydata/mysql/data

從 mysql 9 容器中拷貝配置文件出來:

docker cp mysql9:/etc/my.cnf /mydata/mysql/conf

4. 刪除 mysql 9 容器

docker stop mysql9
docker rm mysql9

5. 重新創(chuàng)建 mysql9 容器,并實現(xiàn)目錄掛在。

docker run --name=mysql9 --mount type=bind,src=/mydata/mysql/conf/my.cnf,dst=/etc/my.cnf --mount type=bind,src=/mydata/mysql/data,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:9.0.1

你知道這兩種寫法有什么不同嗎?請參考這篇文章 - 《docker 的目錄掛載的新語法》

–mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf
-v /path-on-host-machine/my.cnf:/etc/my.cnf

注意: -e MYSQL_ROOT_PASSWORD=root, 經(jīng)過我測試,這個密碼只能設置 root, 設置其他的登不進去。如果不想設置為 root 密碼,那么需要創(chuàng)建新用戶,往下看,后面教程有教怎么創(chuàng)建新用戶。

使用root以外的密碼進行登錄的時候會報如下錯誤:

mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

到此 docker 就成功安裝了 mysql 9 了。

那下一步我們要做什么呢? 遠程連接 mysql 。 沒錯,所以繼續(xù)往下看。

6. 修改配置文件添加允許遠程訪問配置

編輯 /mydata/mysql/conf/my.cnf

在配置文件中找到 [mysqld] 部分,添加下面屬性

bind-address = 0.0.0.0

這會允許 MySQL 接受來自任何 IP 地址的連接。

修改完成后,需要重啟 mysql 容器。

docker restart mysql9

7. 登錄到 mysql 中賦予新用戶遠程訪問的權限

注意:下面這段是舊 mysql 的用法了。在 mysql 9 中不能使用這種用法了。

# 1. 如果已經(jīng)有現(xiàn)有用戶,修改權限:
GRANT ALL PRIVILEGES ON database.* TO 'root'@'%' IDENTIFIED BY 'root';

FLUSH PRIVILEGES;

上面這種寫法在 mysql 9 中運行會報如下錯誤:

mysql>  GRANT ALL PRIVILEGES ON mysql.* TO 'root'@'%' IDENTIFIED BY 'root';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'root'' at line 1

在 MySQL 8.0 和 9.0 版本中,GRANT 語句的語法發(fā)生了一些變化,尤其是涉及到用戶創(chuàng)建和權限賦予的部分。特別地,MySQL 8.0+ 版本不允許在 GRANT 語句中直接使用 IDENTIFIED BY 來設置密碼,密碼設置應該通過 CREATE USER 或 ALTER USER 語句進行。

這個錯誤是因為在 MySQL 9.0.1 中,我們試圖在 GRANT 語句中使用 IDENTIFIED BY,而 MySQL 9.0.1 的語法不允許這樣做。

正確的做法:

# 1. 首先使用 CREATE USER 語句創(chuàng)建一個新用戶,并設置密碼:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';

# 2. 然后使用 GRANT 語句為該用戶授予權限:
GRANT ALL PRIVILEGES ON mysql.* TO 'username'@'%';

# 3. 最后,執(zhí)行 FLUSH PRIVILEGES 使權限立即生效:
FLUSH PRIVILEGES;

我們這里以 root 用戶舉例,在 mysql 庫 下的 user 表可以查看到已有用戶。

所以直接執(zhí)行下面語句就行:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

然后再用 Navicate 去連接,已經(jīng)可以正常連接上了。

在這里插入圖片描述

到此這篇關于docker部署mysql 9.0.1的實現(xiàn)的文章就介紹到這了,更多相關docker部署mysql 9.0.1內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 查看docker是否處于啟動狀態(tài)的方法詳解

    查看docker是否處于啟動狀態(tài)的方法詳解

    Docker 是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,本文主要給大家介紹了查看docker是否處于啟動狀態(tài)的方法,需要的朋友可以參考下
    2024-06-06
  • 解決docker安裝完成報:bridge-nf-call-iptables is disabled問題

    解決docker安裝完成報:bridge-nf-call-iptables is disabled問題

    這篇文章主要介紹了解決docker安裝完成報:bridge-nf-call-iptables is disabled問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker 跨主機容器間相互訪問的實現(xiàn)

    Docker 跨主機容器間相互訪問的實現(xiàn)

    本文主要介紹了Docker 跨主機容器間相互訪問的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • docker容器啟動失敗如何查看日志

    docker容器啟動失敗如何查看日志

    這篇文章主要介紹了docker容器啟動失敗如何查看日志問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 一篇文章弄懂Docker鏡像的制作、上傳、拉取和部署

    一篇文章弄懂Docker鏡像的制作、上傳、拉取和部署

    Docker包含三個基本概念,分別是鏡像(Image)、容器(Container)和倉庫(Repository),鏡像是 Docker 運行容器的前提,這篇文章主要給大家介紹了如何通過一篇文章弄懂Docker鏡像的制作、上傳、拉取和部署的相關資料,需要的朋友可以參考下
    2021-08-08
  • 基于Docker的PHP調用基于Docker的Mysql數(shù)據(jù)庫

    基于Docker的PHP調用基于Docker的Mysql數(shù)據(jù)庫

    Docker 是一個開源的應用容器引擎,自從接觸docker以來,一直想建立基于Docker的PHP調用基于Docker的Mysql數(shù)據(jù)庫,下面通過本文給大家介紹下,感興趣的朋友參考下
    2016-11-11
  • docker容器時區(qū)錯誤問題

    docker容器時區(qū)錯誤問題

    常出現(xiàn)docker中運行的容器獲取到的時間與北京時間相差8小時的問題,其實是因為容器運行的時區(qū)不正確。本文主要介紹了docker容器時區(qū)錯誤問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 一文搞定Docker安裝ElasticSearch的過程

    一文搞定Docker安裝ElasticSearch的過程

    通過本文可以幫助大家快速學習Docker安裝ElasticSearch的過程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • docker容器如何查看運行日志

    docker容器如何查看運行日志

    這篇文章主要介紹了docker容器如何查看運行日志問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Docker?下MySQL數(shù)據(jù)庫的備份和恢復的操作方法

    Docker?下MySQL數(shù)據(jù)庫的備份和恢復的操作方法

    這篇文章主要介紹了Docker?下MySQL數(shù)據(jù)庫的備份和恢復操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02

最新評論