docker配置数据库

MySQL

下载

docker pull mysql

挂载数据卷

首先创建一个测试,查看配置文件的目录

docker run --name mysqltest \
-p 3307:3306 -e MYSQL_ROOT_PASSWORD=root \
-d mysql

然后进入mysql,查看文件路径,会按照优先级排序

docker exec -it mysqltest bash

# 查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf

# order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

查看挂载数据目录

docker inspect mysqltest 

在Mounts中

"Mounts": [
            {
                "Type": "volume",
                "Name": "7e319050fc7b3b01487eac0fbc48b331fc318cede3fe2ef814ca806b45ce0451",
                "Source": "/var/lib/docker/volumes/7e319050fc7b3b01487eac0fbc48b331fc318cede3fe2ef814ca806b45ce0451/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

创建本地挂载目录

mkdir -p /home/docker/mysql/conf && mkdir -p /home/docker/mysql/datadir

将测试容器里 MySQL 的配置文件复制到该路径。日后需改配置,直接在挂载路径的配置文件上修改即可。

docker cp mysqltest:/etc/my.cnf /home/docker/mysql/conf

创建新的容器,并启动

docker run --name database \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
--mount type=bind,src=/home/docker/mysql/conf/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=/home/docker/mysql/datadir,dst=/var/lib/mysql \
--restart=on-failure:3 \
-d mysql
docker exec -it name bash

# 提示输入密码,密码默认123456
mysql -uroot -p123456

# 修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

flush privileges;

docker配置数据库
https://dreamerland.cn/2024/04/07/服务器技术杂项/docker配置数据库/
作者
Silva31
发布于
2024年4月7日
许可协议