导航:首页 > 版本升级 > dockermysql配置文件

dockermysql配置文件

发布时间:2022-12-20 14:40:00

A. docker中MySQL的时区修改

docker中的mysql时区是使用了世界标准时间(UTC),把时区改成东八区方法:
1、启动容器时设置: 添加如下配置:

2、进入docker配置:(重启才能生效--永久生效)

3、临时修改(从mysql上修改,重启失效)

B. 解决docker 中mysql占用内存过大问题

docker stats

首先安装vim :    yum install vim -y

修改mysql配置 : vim /etc/my.cnf

[mysqld]

performance_schema_max_table_instances=400

table_definition_cache=400

table_open_cache=256

docker restart db-manage

C. docker 怎么配置mysql

首先创建一个Dockerfile:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

然后使用docker build -t name .命令来构建一个image,在这里,FROM是源镜像,如构建mysql可以使用FROM ubuntu:14.04来指定操作系统,RUN是跑的一些shell命令,我们能通过这些命令来在image持久化一些操作。CMD则是docker run时执行的命令。

D. docker mysql 配置文件在哪儿

首先要看你是自己装的还是docker pull的成品,不过不管怎么样,mysql的配置文件名称是不变的,最简单的方法是使用在容器里使用find / -name +文件名称 查找。

E. Docker MySQL修改配置文件不生效

官方文档说只要volume映射就可以 https://hub.docker.com/_/mysql?tab=description

但本地配置文件虽然映射过去了,MySQL对于配置文件的权限会检查,导致不生效。错误信息为

具体方法见StackOverflow: https://stackoverflow.com/questions/37001272/fixing-world-writable-mysql-error-in-docker
解决思路是映射配置文件的source,并在启动MySQL前将配置文件source复制到conf.d,这样配置文件的权限是满足要求的。

我使用的容器版本内vim装不上,无法容器内编辑配置文件。root也进不去,无法修改文件权限。

F. Docker 安装Mysql 配置 lower_case_table_names 不生效问题

重启mysql

show global variables like '%lower_case%'

没有生效! 且查了很多文章都是来回拷贝,无有用信息

将参数配置在docker run 中有效

注意/说明

1.对于已经在运行的mysql docker,没有办法, 备份数据库 再docker run 一个

2.lower_case_table_names 在 docker run 参数中变成了:lower-case-table-names

3.可能类似的参数都需要这种方式才能成功

4.本次问题主要是为了运行开源代码,并不是推荐使用mysql 的"忽略大小写"

G. Docker映射配置文件到宿主机

    最近在做mysql中间件的docker,搞了mycat、mysql route都拉不起来容器,最后试试proxysql可以,proxysql官方发布了镜像,感觉比较可靠。但是遇到一个小问题,笔者以前写过一篇文章-Docker MySQL数据持久化,用数据卷挂载的方式将mysql的数据(映射数据目录)持久化到宿主机。那么配置文件也是有必要来映射的,注意就可以避免在容器内安装编辑器。

    容器内有apt  和ap-get工具,安装前要apt update(或者apt-get  update,较慢)更新软件列表,然后apt install(或者apt-get  install),这样会增大容器空间,是没有必要的。笔者以前就是这样操作的,但是比较麻烦,而且容器如果是内部网络的话来安装的话就更加不方便了。笔者在映射数据目录时使用-v /home/mysql/data:/var/lib/mysql 。但是使用同样的分发,今天在映射proxysql的配置文件proxysql.cnf时遇到一个麻烦。

    先看看笔者挂载时遇到的问题: Are you trying to mount a directory onto a file。

    都是文件,那里来的目录呢。映射的意思是将可以将宿主机目录挂载到容器中,那么可能就是将/home/mycentos/proxysql.cnf设别为一个目录了,因为容器内/etc/proxysql.cnf的是真实存在的文件。在/home/mycentos/目录下ls -l查看一下。

    果然是目录!辗转反侧找到原因是 docker启动容器进行挂载的时候,如果路径不存在,那么docker会自动创建一个目录。

    笔者的home/mycentos/目录下没有proxysql.cnf文件,挂载时docker就新建了一个proxysql.cnf的目录,但是这个对于挂载数据目录时是十分有用的,对于配置文件来说是不行的。于是笔者在目录home/mycentos/下新建了一个proxysql.cnf文件,再次运行docker run成功(前面运行失败的容器需要删除,不然名称冲突)。

docker run -itd --name proxysql -p 16032:6032 -p 16033:6033 -p 16070:6070 -v /home/mycentos/proxysql.cnf:/etc/proxysql.cnf proxysql/proxysql

    挂载后,容器内的/etc/proxysql.cnf配置文件是空的,不挂载的情况下是保持默认配置文件内容的,使用徐需要在编辑/home/mycentos/proxysql.cnf文件,然后进入容器后/etc/proxysql.cnf配置文件会跟随改变的。但是配置文件为空,那么就要从头开始配置,这对于配置文件很多的话是不方便的,保留原来的配置配置文件,再在里面修改会更加方便。这里笔者只能想到先运行一个容器,然后docker cp拷贝容器内的文件或者文件夹,在删除这个容器,另外开一个配置文件映射的容器。

    映射配置文件避免在容器内进行apt操作,使得容器膨胀过大。比如你要安装编辑器vi,首先要apt update更新,然后apt install ,相比于在容器外对其进行操作来说,更加麻烦没必要。

H. 在Docker中安装MySQL5.7

docker pull mysql:5.7

将全部的配置文件和关联的文件夹统一放到 /opt/docker/mysql 中

创建 MySQL 配置文件文件夹
mkdir -p /opt/docker/mysql/conf.d

增加并修改配置文件 config-file.cnf
vim /opt/docker/mysql/conf.d/config-file.cnf

输入如下内容:

创建 MySQL 数据文件夹
mkdir -p /opt/docker/mysql/var/lib/mysql

启动,设置默认密码 root ,TZ 设置容器的默认时区

Windows使用这条:

进入容器
docker exec -it mysql bash

进入 MySQL
mysql -uroot -p
输入刚才我们设置的密码 root

授权
mysql> GRANT ALL ON *.* TO 'root'@'%';

刷新权限
mysql> flush privileges;

更新加密规则
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSword EXPIRE NEVER;

更新 root 密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

刷新权限
mysql> flush privileges;

退出容器
exit

启动容器
docker start mysql

停止容器
docker stop mysql

重启容器
docker restart mysql

进入容器
docker exec -it mysql bash

删除容器
docker rm mysql

查看日志
docker logs -f mysql

备份数据
docker exec mysql sh -c 'exec mysqlmp --all-databases -uroot -p 密码' > /usr/local/all-databases.sql

恢复数据
docker exec -i mysql sh -c 'exec mysql -uroot -p 密码' < /usr/local/all-databases.sql

I. Docker搭建与使用

docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来。

这里使用的是 阿里云提供的镜像加速 ,登录并且设置密码之后在左侧的 Docker Hub 镜像站点 可以找到专属加速器地址,复制下来。
然后分开执行以下命令:

之后重新加载配置,并且重启 Docker 服务

这里推荐使用 Portainer 作为容器的 GUI 管理方案。官方地址: https://portainer.io/install.html
安装命令:

访问你的 IP:9000 即可进入容器管理页面。

名字为镜像库中的镜像名,若出现权限问题报错,前面加上sudo即可。

参数说明:
-p 3306:3306 :将容器的3306端口映射到主机的3306端口
-v /mydata/mysql/log:/var/log/mysql :将配置文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql :将日志文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql :将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root :初始化root用户的密码

验证,查看docker下的所有进程:docker ps

docker安装的mysql,相当于linux系统中单开了一个linux专门用来安装mysql。
-p 3306:3306 :将容器的3306端口映射到主机(vagrant开启的虚拟机)的3306端口。
日志也是将经常变动数据挂载到外部linux文件夹下。

  上面已经说到,将mysql容器中的配置文件挂载到本机中,所以直接修改本机目录下的配置文件即可。

防止挂载时 redis.conf找不到而在conf文件夹下再次创建名为redis.conf的文件夹,所以预先创建。

mysql之前是进入容器,现在我们直接进入客户端进行操作redis

贼好用啊,还有提示。

docker restart redis 重启redis容器后,发现之前的数据都丢失了,因为保存在内存中。所以我们需要配置持久化。
因为之前已经将容器配置文件挂载到本机目录下,所以直接修改本机redis.conf即可。

重启验证,OK。

J. 解决Docker Mysql无法正确加载配置文件

使用-v映射宿主机下的文件作为mysql的配置文件时,可能出现mysql无法正确读取文件中配置项的问题

该问题的主要原因为宿主机的文件权限不对,由于docker的mysql镜像启动使用的是mysql这个用户,而非root用户,mysql用户的id和gid都为999

通过修改宿主机文件的权限可以解决该问题

阅读全文

与dockermysql配置文件相关的资料

热点内容
regionjava 浏览:601
威少最高数据是多少 浏览:142
装linux强制uffi安装 浏览:21
诗词名句网站长怎么联系 浏览:673
网络割接工作怎么样 浏览:945
网络的无线模式是什么 浏览:691
苹果6sp的蜂窝网络是不是更新了 浏览:970
仪表升级编程是什么意思 浏览:190
微信欢乐红包怎么抢 浏览:772
excel在文件中发现不可读取的内容 浏览:435
dv300f驱动程序 浏览:34
word清空最近打开文件 浏览:407
ps单色文件变成四色黑了 浏览:171
青岛违章拍照app哪个好 浏览:922
荣成侧耳倾听微信 浏览:881
excel2017密码忘记 浏览:400
邮箱文件怎么保存到桌面上 浏览:96
一平面二平面上传哪些数据 浏览:452
excel不能保存文件 浏览:369
苹果手机6怎么开4g网络 浏览:179

友情链接