docker之旅 6.docker下面安裝mysql, 訪問mysql

一不小心 又踩坑了。

# 拉取 mysql 鏡像
docker pull mysql 

 修改 docker-compose.yml ,創建一個 mysql 的容器,跟隨系統啓動

 這是我的  docker-compose.yml  文件:

version: '2.x'

services:
  myNginx:
    image: nginx
    restart: always

  myRedis:
    image: redis
    restart: always
    ports:
      - "6379:6379"

  mysql:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: henry6764  # 設置 MySQL root 用戶的密碼
      MYSQL_USER: henry  # 設置自定義用戶名
      MYSQL_PASSWORD: henry6764  # 設置自定義用戶的密碼
    ports:
      - "3307:3306"  # 將容器的 MySQL 默認端口3306 映射到宿主機的 3307 端口
    volumes:
      - /home/henry/mysqlFilePath:/var/lib/mysql  # 將容器內的 MySQL 數據目錄掛載到宿主機上

因爲我的centos7下面安裝過  mariadb了,3306 端口號被佔用,這裏把mysql的端口號改爲了 3307。(需要手動去開啓端口號)

1.獲取 docker 下面 mysql 的ip地址:

docker  ps 

查看 容器id信息。

2.確定 MySQL 容器的 IP 地址:

首先,你需要確定 MySQL 容器的 IP 地址。你可以使用以下命令獲取 MySQL 容器的 IP 地址:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器ID或容器名稱

將上面命令中的 容器ID或容器名稱 替換爲你的 MySQL 容器的 ID 或名稱,然後執行該命令,即可獲取到 MySQL 容器的 IP 地址。

 

因爲默認安裝了最新的 mysql,所以導致 登錄的時候失敗了。(centos7下面的mysql客戶端比較舊)

由於 MySQL 8 默認使用了 caching_sha2_password 認證插件導致的。要解決這個問題,你可以通過以下兩種方法之一:

  1. 使用 MySQL 8 兼容的客戶端:

    你可以使用 MySQL 8 兼容的客戶端,或者更新你的 MySQL 客戶端到最新版本,這樣就可以正常連接到 MySQL 8 服務了。

  2. 修改 MySQL 用戶的認證插件:

    如果你希望繼續使用舊版本的 MySQL 客戶端,你可以在 MySQL 服務器上修改用戶的認證插件,以便兼容舊版客戶端。

    下面是具體的步驟:

    • 首先,使用一個兼容的客戶端連接到 MySQL 服務器。

    • 然後,登錄到 MySQL 服務器並執行以下 SQL 命令:

       
      ALTER USER 'henry'@'%' IDENTIFIED WITH mysql_native_password BY 'henry6764';

       

      這個命令會將用戶 henry 的認證插件修改爲 mysql_native_password,以兼容舊版的 MySQL 客戶端。

      如果你希望更改的是本地用戶而不是遠程用戶,將 '%' 替換爲 'localhost'

    然後,嘗試使用你的 MySQL 客戶端連接到 MySQL 服務器,應該就不會再出現上述錯誤了。


 

這裏,我採用的方法2.

先用 

docker ps

 查看 mysql 的 容器id, 假設爲  123456

再使用 docker  exec 命令進入 mysql. 注意,我們假設 123456 是我們查詢到的容器id。具體使用的時候,這個數字要自己替換。  

docker   exec  -it   123456    /bin/bash  

進入到mysql 所在的容器之後,執行

ALTER USER 'henry'@'%' IDENTIFIED WITH mysql_native_password BY 'henry6764';

然後退出。

然後,我們就可以在 centos7下面,通過 mysql 客戶端工具,去訪問  容器下面的 mysql 了。

mysql -u henry   -h 172.18.0.4  -p
172.18.0.4  是mysql容器的ip地址。

 

總結:

這篇文章主要是介紹

1.如何安裝mysql容器?

2.如何去修改mysql 8 的一些特性(因爲安裝的mysql 是mysql 8最新版本),讓舊版本 mysql客戶端 也能登錄mysql8 

3.如何在centos7下面 使用mysql 工具,登錄到 docker下面的mysql容器。

 

未解決問題:

windows下面的dbeaver 想去連上 centos7(虛擬機) 下面的 docker 的 mysql .

試過在centos7下面安裝代理,但是 還是沒有臉上。暫時放一放。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章