docker安装mysql并配置,Docker安装MySql-挂载外部数据和配置
在上一篇中《在CentOS7中使用Docker安裝MySql》中介紹了怎樣在Docker中安裝Mysql,但存在兩個問題:
1、用戶密碼和字符集等的設(shè)置,需要安裝完MySql后,進(jìn)入到MySql中去設(shè)置,非常麻煩;
2、配置文件和數(shù)據(jù)文件都在MySql的容器內(nèi),不是很安全。
本文將介紹怎樣在創(chuàng)建容器時通過參數(shù)的配置來解決上面兩個問題。
環(huán)境CentOS:7.4
Docker:1.13.1
MySql:8.0.11
設(shè)置環(huán)境變量
設(shè)置環(huán)境變量和鏡像的參數(shù),可以來解決第一個問題,環(huán)境變量使用-e的方式設(shè)置在鏡像名稱的前面;鏡像的參數(shù)需要配置在鏡像名稱的后面
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
環(huán)境變量說明:
-e MYSQL_USER=”fengwei”:添加用戶fengwei
-e MYSQL_PASSWORD=”pwd123”:設(shè)置fengwei的密碼偉pwd123
-e MYSQL_ROOT_PASSWORD=”rootpwd123”:設(shè)置root的密碼偉rootpwd123
鏡像參數(shù)說明:
–character-set-server=utf8:設(shè)置字符集為utf8
–collation-server=utf8_general_ci:設(shè)置字符比較規(guī)則為utf8_general_ci
使用SQLyog進(jìn)行測試,用戶名和密碼使用上面環(huán)境變量中添加的用戶fengwei和密碼pwd123,出現(xiàn)下圖的錯誤
執(zhí)行命令進(jìn)入到容器中的MySql中,執(zhí)行下面的Sql語句
ALTER USER 'fengwei'@'%' IDENTIFIED WITH mysql_native_password BY 'password123';
再用SQLyog測試,連接成功
上面連接不成功的問題也可以添加鏡像參數(shù)--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
數(shù)據(jù)和配置掛載到宿主機
為了安全性,我們應(yīng)該將數(shù)據(jù)和配置放到宿主機中,首先執(zhí)行下面的命令創(chuàng)建data目錄和config目錄
mkdir mysqltest
cd mysqltest
mkdir data
mkdir config
執(zhí)行下面命令進(jìn)入到config目錄中,并在該目錄中創(chuàng)建my.cnf配置文件
cd config
touch my.cnf
my.cnf配置文件內(nèi)容如下
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
執(zhí)行下面命令創(chuàng)建容器
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
參數(shù)說明
–restart always:開機啟動
–privileged=true:提升容器內(nèi)權(quán)限
-v=/mysqltest/config/my.cnf:/etc/my.cnf:映射配置文件
-v=/mysqltest/data:/var/lib/mysql:映射數(shù)據(jù)目錄
特別說明
如果沒有添加--privileged=true參數(shù),容器創(chuàng)建后不能正常啟動,查看日志發(fā)現(xiàn)有權(quán)限的錯誤
容器正常創(chuàng)建啟動后,可以用客戶端工具進(jìn)行連接測試。
總結(jié)和思考
1、不只是MySql,應(yīng)該是所有涉及到數(shù)據(jù)和配置的,都不應(yīng)該放在容器內(nèi)部。
2、使用-v參數(shù)掛接外部數(shù)據(jù)時,如果data目錄已經(jīng)存在容器能正常啟動嗎?
3、在docker run命令中添加鏡像參數(shù)和直接在my.cnf中設(shè)置有什么區(qū)別?
總結(jié)
以上是生活随笔為你收集整理的docker安装mysql并配置,Docker安装MySql-挂载外部数据和配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java解码vhd的磁盘文件,VHD J
- 下一篇: mysql5.0修改字符集,查看mysq