docker安装mysql
1、docker安装mysql
docker run -d --restart=always --network=host --name mysql-server -v /home/data/mysql/conf:/etc/mysql/conf.d -v /home/data/mysql/data:/var/lib/mysql -v /home/data/mysql/log:/logs -e MYSQL_ROOT_PASSWORD=root mysql:5.7
解读:需要暴露端口,挂载卷
环境变量
MYSQL_ROOT_PASSWORD
此变量是必需的,并指定将为 MySQLroot
超级用户帐户设置的密码。在上面的例子中,它被设置为my-secret-pw
。
MYSQL_DATABASE
此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权限(对应于)。GRANT ALL
MYSQL_USER
,MYSQL_PASSWORD
这些变量是可选的,用于创建新用户和设置该用户的密码。该用户将被授予MYSQL_DATABASE
变量指定的数据库的超级用户权限(见上文)。要创建用户,这两个变量都是必需的。
请注意,无需使用此机制来创建超级用户超级用户,默认情况下会使用MYSQL_ROOT_PASSWORD
变量指定的密码创建该用户。
MYSQL_ALLOW_EMPTY_PASSWORD
这是一个可选变量。设置为非空值,例如yes
,以允许使用 root 用户的空白密码启动容器。注意:除非您真的知道自己在做什么,否则不建议将此变量设置yes
为,因为这将使您的 MySQL 实例完全不受保护,从而允许任何人获得完全的超级用户访问权限。
MYSQL_RANDOM_ROOT_PASSWORD
这是一个可选变量。设置为非空值,例如yes
,为 root 用户生成一个随机初始密码(使用pwgen
)。生成的 root 密码将打印到 stdout ( GENERATED ROOT PASSWORD: .....
)。
MYSQL_ONETIME_PASSWORD
初始化完成后将root(不是!中指定的用户MYSQL_USER
)用户设置为过期,强制在首次登录时更改密码。任何非空值都将激活此设置。注意:此功能仅在 MySQL 5.6+ 上受支持。在 MySQL 5.5 上使用此选项将在初始化期间引发适当的错误。
MYSQL_INITDB_SKIP_TZINFO
默认情况下,入口点脚本会自动加载CONVERT_TZ()
函数所需的时区数据。如果不需要,任何非空值都会禁用时区加载。
挂载数据目录
Docker 文档是了解不同存储选项和变体的良好起点,并且有多个博客和论坛帖子在该领域讨论和提供建议。我们将在这里简单地展示上面后一个选项的基本过程:
-
在主机系统上的合适卷上创建数据目录,例如
/my/own/datadir
. -
像这样启动你的
mysql
容器:$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
该-v /my/own/datadir:/var/lib/mysql
命令的一部分/my/own/datadir
将底层主机系统中的目录安装/var/lib/mysql
在容器内,默认情况下 MySQL 将在其中写入其数据文件。
备份数据库实例的数据
大多数普通工具都可以工作,尽管在某些情况下它们的使用可能有点复杂,以确保它们可以访问mysqld
服务器。确保这一点的一种简单方法是docker exec
从同一个容器中使用和运行该工具,类似于以下内容:
$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
#!/bin/bash set -e HOME_DIR=/home/backup DATE=`date +%Y%m%d%H` ZIP_NAME=$DATE".tar.gz" startTime=`date +%Y%m%d-%H:%M:%S` startTime_s=`date +%s` cd $HOME_DIR mkdir -p $DATE docker exec -i mysql mysqldump -u root -pbG7*bN --all-databases --default-character-set=utf8 --hex-blob > ${DATE}/all_databases.sql echo "dump all databases" echo "compress" tar -czvPf $ZIP_NAME $DATE --remove-files echo "clean backup before 30days" find ${HOME_DIR} -mtime +30 -name "*.gz" -exec rm -rf {} \; endTime=`date +%Y%m%d-%H:%M:%S` endTime_s=`date +%s` sumTime=$[ $endTime_s - $startTime_s ] echo "backup completed $startTime ---> $endTime" "Total:$sumTime seconds"
还原数据库的数据
用于恢复数据。您可以使用docker exec
带有-i
标志的命令,类似于以下内容:
$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql
mysql8的安装
docker pull mysql:8.0
docker run -p 3307:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
docker run --name mysql -d -p 6033:3306 --restart=always -v /publish/mysql/log:/logs -v /publish/mysql/data:/var/lib/mysql -v /publish/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=ffcbea30550@ mysql:5.7
更改密码,开启远程连接
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ffcbea30550@';
flush privileges; #刷新权限
参考:https://blog.csdn.net/m0_72157951/article/details/127822670
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?