在docker中安装mysql数据库

本文详细介绍了如何在 CentOS 7.4 上安装 Docker 环境,然后下载 MySQL 官方镜像,并通过初始化脚本设置数据库参数,包括创建数据目录、配置权限等,最后执行脚本来启动和管理 MySQL 服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装Docker环境(CentOS 7.4)

step 1: 安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Step 2: 添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Step 3: 更新并安装 Docker-CE

sudo yum makecache fast
sudo yum -y install docker-ce

Step 4: 开启Docker服务

sudo service docker start

通常我们使用Docker的时候都是使用的root,官方说法如下:

The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can access it with sudo. For this reason, docker daemon always runs as the root user.

To avoid having to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

下面是使用非root用户操作的步骤:

创建docker组
sudo groupadd docker

将当前用户加入docker组
sudo gpasswd -a ${USER} docker

重新启动docker服务
sudo systemctl restart docker

修改/var/run/docker.sock权限
sudo chmod a+rw /var/run/docker.sock

Step 5: 下载Mysql官方镜像

运行
docker pull mysql:5.7

下载mysql5.7官方镜像,用docker images查看已下载的镜像列表。
初始化Mysql服务
配置数据库参数

Step 6:修改init.sh文件,配置说明:

#!/bin/bash

command=`docker ps |grep mysql`
if [[ "$command" == ""  ]];then
    echo "strting mysql..."
    docker start mysql
else 
    echo  "mysql is  starting !"
fi

➜  mysql ./start.sh 
mysql is  starting !
➜  mysql cat init.sh 
#!/bin/bash
# 在Docker容器中初始化mysql服务
 
# 镜像名称
IMAGE=$1
# 容器名称
INSTANCE_NAME=mysql
# Mysql数据文件存放路径,默认为当前shell文件所在目录
HOME=$(cd `dirname $0`; pwd)
#数据存储目录
DATA_DIR="$HOME/data"
#数据存储目录
CONF_DIR="$HOME/conf"
 
#数据库名
DATABASE=swqdb
#用户名
USER=swq
#用户密码
PASSWORD=swq#2018
# ROOT密码
ROOT_PASSWORD=swq#2018
#创建data文件夹
mkdir data conf
 
DOCKER_PARAM="-v $CONF_DIR:/etc/mysql/conf.d -v $DATA_DIR:/var/lib/mysql"
MYSQL_PARAM="-e MYSQL_ROOT_PASSWORD=$ROOT_PASSWORD -e MYSQL_DATABASE=$DATABASE -e MYSQL_USER=$USER -e MYSQL_PASSWORD=$PASSWORD"
MYSQL_VARS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"
docker run -p 3306:3306 --name $INSTANCE_NAME $DOCKER_PARAM --user 1000:1000 $MYSQL_PARAM -d $IMAGE $MYSQL_VARS

Step 7: 初始化服务

创建Mysql目录

sudo mkdir -p /data/mysql

在mysql目录创建init.sh文件(见上)

docker run -p 3306:3306 --name $INSTANCE_NAME $DOCKER_PARAM --user 1000:1000 $MYSQL_PARAM -d $IMAGE $MYSQL_VARS
中的--user 1000:1000是当前用户的uid和gid,因为docker容器内部默认是使用root账户,该命令可以使映射的文件夹拥有者为当前操作用户.

Step 8: 执行初始化脚本

./init.sh mysql:5.7

执行完上述命令后mysql服务初始化完成,并自动启动,创建了一个名为mysql数据文件存放于/data/mysql/data目录,服务端口号3306,创建了默认数据库qiyuesuodb,默认用户qiyuesuo初始密码qiyuesuo#2018。
Mysql服务管理

启动服务:docker start mysql

停止服务:docker stop mysql

登录数据库:mysql -h 127.0.0.1 -uswq -pswq#2018

清除数据:停止mysql服务,cd至mysql目录,sudo rm -rf ./data 删除data文件夹,然后再启动服务即可。

其他脚本

remove.sh
清除所有数据并删除容器:

#!/bin/bash

#说明
#1.先用户确认是否删除
#2.用户确认后删除容器和data目录

echo -n "This operation will completely remove mysql and mysql data , continue? [y/n] "
read opt
if [[ $opt == y  ]];then 
    echo "removing mysql..."
    docker rm -f mysql
    echo "removing mysql data..."
    rm -rf data conf
    echo "All of mysql data are removed!  "
elif [[ $opt == n ]];then
    echo "Exiting..." 
else 
    echo "Please input y or n!" 
    echo "Exiting..."
fi

backup.sh
备份当前数据

#!/bin/bash

#获取当前日期
echo "创建备份文件夹..."
ls_date=`date +%Y%m%d`
mkdir backup$ls_date
echo "备份数据库配置和数据..."
cp -r ./conf ./backup$ls_date
cp -r ./data ./backup$ls_date
echo "备份完成.."
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值