日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

docker安装mysql并配置,Docker安装MySql-挂载外部数据和配置

發布時間:2025/4/17 数据库 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker安装mysql并配置,Docker安装MySql-挂载外部数据和配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇中《在CentOS7中使用Docker安裝MySql》中介紹了怎樣在Docker中安裝Mysql,但存在兩個問題:

1、用戶密碼和字符集等的設置,需要安裝完MySql后,進入到MySql中去設置,非常麻煩;

2、配置文件和數據文件都在MySql的容器內,不是很安全。

本文將介紹怎樣在創建容器時通過參數的配置來解決上面兩個問題。

環境CentOS:7.4

Docker:1.13.1

MySql:8.0.11

設置環境變量

設置環境變量和鏡像的參數,可以來解決第一個問題,環境變量使用-e的方式設置在鏡像名稱的前面;鏡像的參數需要配置在鏡像名稱的后面

docker run -d -p 4306:3306

-e MYSQL_USER="fengwei"

-e MYSQL_PASSWORD="pwd123"

-e MYSQL_ROOT_PASSWORD="rootpwd123"

--name mysql001

mysql/mysql-server

--character-set-server=utf8

--collation-server=utf8_general_ci

環境變量說明:

-e MYSQL_USER=”fengwei”:添加用戶fengwei

-e MYSQL_PASSWORD=”pwd123”:設置fengwei的密碼偉pwd123

-e MYSQL_ROOT_PASSWORD=”rootpwd123”:設置root的密碼偉rootpwd123

鏡像參數說明:

–character-set-server=utf8:設置字符集為utf8

–collation-server=utf8_general_ci:設置字符比較規則為utf8_general_ci

使用SQLyog進行測試,用戶名和密碼使用上面環境變量中添加的用戶fengwei和密碼pwd123,出現下圖的錯誤

執行命令進入到容器中的MySql中,執行下面的Sql語句

ALTER USER 'fengwei'@'%' IDENTIFIED WITH mysql_native_password BY 'password123';

再用SQLyog測試,連接成功

上面連接不成功的問題也可以添加鏡像參數--default-authentication-plugin=mysql_native_password來解決,完整命令如下

docker run -d -p 4306:3306

-e MYSQL_USER="fengwei"

-e MYSQL_PASSWORD="pwd123"

-e MYSQL_ROOT_PASSWORD="rootpwd123"

--name mysql001

mysql/mysql-server

--character-set-server=utf8

--collation-server=utf8_general_ci

--default-authentication-plugin=mysql_native_password

數據和配置掛載到宿主機

為了安全性,我們應該將數據和配置放到宿主機中,首先執行下面的命令創建data目錄和config目錄

mkdir mysqltest

cd mysqltest

mkdir data

mkdir config

執行下面命令進入到config目錄中,并在該目錄中創建my.cnf配置文件

cd config

touch my.cnf

my.cnf配置文件內容如下

[mysqld]

user=mysql

character-set-server=utf8

default_authentication_plugin=mysql_native_password

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

執行下面命令創建容器

docker run -d -p 4306:3306

--restart always

--privileged=true

--name mysql001

-e MYSQL_USER="fengwei"

-e MYSQL_PASSWORD="pwd123"

-e MYSQL_ROOT_PASSWORD="rootpwd123"

-v=/mysqltest/config/my.cnf:/etc/my.cnf

-v=/mysqltest/data:/var/lib/mysql

mysql/mysql-server

參數說明

–restart always:開機啟動

–privileged=true:提升容器內權限

-v=/mysqltest/config/my.cnf:/etc/my.cnf:映射配置文件

-v=/mysqltest/data:/var/lib/mysql:映射數據目錄

特別說明

如果沒有添加--privileged=true參數,容器創建后不能正常啟動,查看日志發現有權限的錯誤

容器正常創建啟動后,可以用客戶端工具進行連接測試。

總結和思考

1、不只是MySql,應該是所有涉及到數據和配置的,都不應該放在容器內部。

2、使用-v參數掛接外部數據時,如果data目錄已經存在容器能正常啟動嗎?

3、在docker run命令中添加鏡像參數和直接在my.cnf中設置有什么區別?

總結

以上是生活随笔為你收集整理的docker安装mysql并配置,Docker安装MySql-挂载外部数据和配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。