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 文档是了解不同存储选项和变体的良好起点,并且有多个博客和论坛帖子在该领域讨论和提供建议。我们将在这里简单地展示上面后一个选项的基本过程:

  1. 在主机系统上的合适卷上创建数据目录,例如/my/own/datadir.

  2. 像这样启动你的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

posted @   刘百会  阅读(240)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示