首页 > 数据库 >Docker配置mysql

Docker配置mysql

时间:2023-03-03 17:45:18浏览次数:43  
标签:宿主机 创建 配置 compose mysql Docker data docker

1.宿主机创建对应目录

mkdir -p /data/dockers/mysql
cd /data/dockers/mysql
# 创建数据目录
mkdir data
# 创建配置目录
mkdir config
# 创建日志目录
mkdir log

2.创建docker-compose文件

/data/docker/mysql
vi docker-compose.yml
version: '3'

services:
  mysql:
    image: mysql:5.7.30
    restart: unless-stopped
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: monkey
      TZ: Asia/Shanghai						
    ports:
      - "3306:3306"
    volumes:
      - /data/docker/mysql/data:/var/lib/mysql
      - /data/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf
      - /data/docker/mysql/log:/var/log/mysql

环境变量里面的TZ是设置mysql使用的基础镜像(linux系统)的时区

3.编写mysql配置文件

cd /data/dockers/mysql/config
vi my.cnf
#########################
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

default-time_zone = '+8:00'
log_timestamps=SYSTEM

max_connections=1000

default-authentication-plugin=mysql_native_password

skip-host-cache
skip-name-resolve
#########################

在客户端连接mysql的时候,mysql针对客户端IP会进行DNS反查,确认是否已经授权,此时客户端在连接的时候会非常慢。加上skip-host-cacheskip-name-resolve参数后,取消这个功能,连接会加快。

未加参数时的日志:

[Warning] IP address 'xxx' could not be resolved: Temporary failure in name resolution

4.创建容器

cd /data/dockers/mysql/
docker-compose up -d
# 查看容器
docker-compose ps
# 查看日志
docker-compose logs mysql -f

5.创建数据库及用户

docker exec -it mysql bash
mysql -uroot -pmonkey
create database if not exists halodb;
create user 'halo'@'%' identified by 'halo';
grant all privileges on halodb.* to 'halo'@'%';
flush privileges;
show grants for 'halo'@'%';
show databases;
use halodb;

6.其他

  • 数据文件权限为polkitd:input问题

    可以看到,在容器内部,数据文件的权限是mysql,在宿主机中,数据文件的权限是polkitd

    出现这个问题,是因为在容器内,mysql的uid和gid为999,而在宿主机,999的uid对应是polkitd用户,

    999的gid对应的是input组,所以出现了错乱。出现这个问题也不用太担心,docker守护进程一般以root权限运行,因此即使用户不对,容器内创建的文件也可以在宿主机创建出来。

    要解决这个问题

    1. 可以在宿主机创建mysql用户和组,然后把/etc/passwd,/etc/group映射到容器。
    2. 将当前用户的uid和pid传入容器,然后用当前用户启动mysql
    3. 宿主机修改目录权限,让polkitd对日志目录,配置目录,数据目录可读可写。

标签:宿主机,创建,配置,compose,mysql,Docker,data,docker
From: https://www.cnblogs.com/monkey6/p/17176462.html

相关文章

  • # PYTHON执行SQL语句操作MySQL数据库软件
    PYTHON执行SQL语句操作MySQL数据库软件准备安装第三方包PyMySQL创建到MySQL的数据库链接#例frompymysqlimportConnection#获取到MySQL数据库的链接对象conn=......
  • mysql select into outfile默认文件保存路径是C:\ProgramData\MySQL\MySQL Server
    找到my.ini,修改usecure_file_priv=''然后保存并且退出。重启mysql正确的解决方法是:搜索“服务”并进入:下拉找到Mysql左上角处可以进行重启动。如果以后想要通......
  • 【MySQL速通篇001】5000字吃透MySQL部分重要知识点
    ......
  • docker-compose任务编排
    一、docker-compose介绍使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,DockerCompose。......
  • mysql数据库改变编码
    SELECTTABLE_SCHEMA   '数据库',    TABLE_NAME    '表',    COLUMN_NAME    '字段',    CHARACTER_SET_NAME'原字符......
  • MySQL随笔
    函数:一、时间类ps:可以使用now()获取当前系统时间①DATE_SUB:获取时间A前B天的时间用法:date_sub(A,INTERBALBunit)②DATE_FORMAT:时间格式化,将A转化成'%Y-%m-%d'的......
  • [maven] Ubuntu 安装配置 maven
    环境Ubuntu18Java1.8安装配置下载安装下载连接上下载Binarytar.gzarchive解压tarxzvf环境变量vim/etc/profileexportMAVEN_HOME=/opt/apache-mave......
  • mysql中union的用法[转载]
     https://blog.csdn.net/qq_45148387/article/details/116357408?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-11......
  • 配置 Docker 使用 GPU
    准备工作首先你需要准备一台拥有GPU的实例,在这里我将使用阿里云的竞价实例来做演示,因为它对于短期使用GPU更加划算。注意,本篇文章将教你手动进行GPU驱动的配置,所以在购......
  • uwsgi安装及常用配置
    1.安装yuminstallpython39-develpip3installuwsgi常用指令:uwsgi--iniuwsgi.iniuwsgi--stopuwsgi.pidpkill-fuwsgi-9(也可以sodukill-9杀掉进程)......