docker-安装mysql
2023年7月29日大约 2 分钟
上一级页面:index-la
前言
基本上照搬谷粒商城的课件,但是更改了里面my.cnf配置文件
安装
拉取镜像
docker pull mysql:5.7
使用docker命令,从临时的mysql容器里,把这两个文件夹复制出来,具体命令如下
# 启动一个没有挂载的mysql容器
docker run -it --name temp mysql:5.7 /bin/bash
# 检查是否有这两个文件夹
bash-4.2# ls /etc/mysql/
conf.d mysql.conf.d
#退出容器
exit
# 删除原来创建的mysql配置文件夹
sudo rm -rf /mydata/mysql
# 在host机里创建文件夹
sudo mkdir -p /mydata/mysql
# 检查是否从容器里把文件复制出来
ls /mydata/mysql
# 去到目录下
cd /mydata/mysql/
这样问题就解决了,接下来重新初始化运行容器
# 先删除原有容器
docker rm mysql
# 接着运行命令
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
# 检查是否成功运行
docker ps
# 成功运行后,最后删除临时创建的mysql容器
docker rm temp
启动失败,使用docker ps无法看到启动的mysql 容器
先用 docker ps -a 看所有容器,包括启动失败的
发现的确是启动失败了,然后看这篇文章解决:mysql5-7在docker中第一次运行时出错
配置
添加my.cnf文件,设置文件默认编码为utf8mb4
vim /mydata/mysql/conf/my.cnf
配置如下
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect='SET collation_connection = utf8mb4_bin'
init_connect='SET NAMES utf8mb4'
character_set_server = utf8mb4
collation_server = utf8mb4_bin
skip-character-set-client-handshake
skip-name-resolve
复制配置文件到容器中
docker cp /mydata/mysql/conf/my.cnf mysql:/etc/mysql
重启mysql
docker restart mysql
设置docker mysql自启动
首先运行mysql
docker start mysql
然后设置为总是重启
docker update --restart=always mysql
恢复数据
docker cp /mydata/mysql/data/mysql mysql:/var/lib
配置mysql允许远程连接
我这里docker命令指定mysql的登陆密码是 root
进入容器的bash。默认就是允许远程连接的
如果你没有允许远程连接,可以通过这篇文章,来设置远程连接 linux配置mysql
其他命令
docker exec -it mysql /bin/bash