一不小心 又踩坑了。
# 拉取 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
認證插件導致的。要解決這個問題,你可以通過以下兩種方法之一:
-
使用 MySQL 8 兼容的客戶端:
你可以使用 MySQL 8 兼容的客戶端,或者更新你的 MySQL 客戶端到最新版本,這樣就可以正常連接到 MySQL 8 服務了。
-
修改 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下面安裝代理,但是 還是沒有臉上。暫時放一放。