首页 > 数据库 >docker安装mysql

docker安装mysql

时间:2023-02-27 20:03:29浏览次数:58  
标签:容器 data etc mysql home docker 安装

前言:docker安装mysql前需要在系统安装docker环境,安装docker环境这里就不演示了,​​https://www.runoob.com/docker/centos-docker-install.html​​这里有centos安装docker的教程,可以参考这个安装;

docker搭建mysql比较方便,节省时间,很快就可以搭建一个mysql环境了,下面我演示一下如何安装mysql


1.查看可用的mysql镜像

mysql镜像仓库地址:​​https://hub.docker.com/_/mysql?tab=tags​​​


docker安装mysql_docker

选择适用的版本,我这边使用5.7.40版本,在第2页找到这个版本

docker安装mysql_mysql_02

2.拉取mysql镜像

docker pull mysql:5.7.40

docker安装mysql_数据库配置_03


3.查看本地镜像

docker images

可以看到已经成功拉取mysql镜像到本地了

docker安装mysql_mysql_04


4.运行容器

我们可以先按照下面运行容器,然后把配置复制出来,然后再重新运行挂载容器

docker run -itd --name mysql-test -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.40

查看运行的容器​

docker ps

docker安装mysql_数据库配置_05

从容器里面复制数据库配置文件出来

我们可以先进入容器查看

进入容器

docker exec -it mysql-test /bin/bash

docker安装mysql_mysql_06


my.conf.d 里面的目录是空的,我们复制my.cnf出来就可以

docker安装mysql_docker_07


退出容器在centos本地运行复制命令

docker cp mysql-test:/etc/my.cnf .


docker安装mysql_docker_08


我们可以参考默认的数据库配置文件

docker安装mysql_数据库配置_09


停掉容器并删除

##停掉容器

docker stop mysql-test

##删除容器

docker rm mysql-test


docker安装mysql_docker_10



创建文件
mkdir -p /home/data/db/conf && mkdir -p /home/data/db/logs && mkdir -p /home/data/db/data
cd /home/data/db/conf
在这个目录下添加my.cnf配置文件
my.cnf配置内容如下
#####################
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
user=mysql



log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
port=3306
max_cnotallow=1000
[client]
socket=/var/run/mysqld/mysqld.sock
#####################
数据库配置文件说明
skip-name-resolve :禁止mysql对外面链接进行dns解释
skip-host-cache :主机缓存
datadir=/var/lib/mysql :数据存放目录
max_cnotallow=1000 :数据库的最大连接数

##运行容器
docker run -itd --name mysql-test -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone:ro -v /home/data/db/conf:/etc/mysql/conf.d \
-v /home/data/db/logs:/var/log/mysql -v /home/data/db/data:/var/lib/mysql \
-p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.40 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
参数备注说明:
-d :指定后台允许
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪终端,通常与-i同时使用
--name:为容器指定一个名称
-p: 将容器的3306端口映射到主机的3308端口
-v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone:ro :容器里时间同步主机
如果不挂载时间的话,在数据库配置文件my.cnf 的[mysqld]下面添加下面这句
default-time-zone = '+08:00' ,因为容器系统里面总是比主机少8个小时,这是因为 Mysql 的时区并不是我们想要的东八区。
-v /home/data/db/data:/var/lib/mysql :将数据文件挂载到主机,删除容器重新run数据还在
-v /home/data/db/logs:/var/log/mysql :将数据库日志挂载到主机
-v /home/data/db/conf:/etc/mysql/conf.d :将配置文件挂载到主机,可以先在主机配置一份my.cnf
-e MYSQL_ROOT_PASSWORD=123456 :设置root的密码123456
mysql:5.7.40 :镜像名称
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci : 设置字符集和排序方式

查看运行的容器

docker安装mysql_mysql_11


5.进入容器内部,登录数据库

[root@localhost conf]# docker exec -it mysql-test /bin/bash #进入mysql容器
bash-4.2# mysql -uroot -p
Enter password: #输入数据库密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.40 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


docker安装mysql_数据库配置_12



6.检测一下挂载是否生效

重新运行一下,发现数据还在,说明数据挂载已经成功了


docker安装mysql_数据库配置_13


docker安装mysql_mysql_14




相关链接:

mysql5.7参考手册

​https://dev.mysql.com/doc/refman/5.7/en/​



适度娱乐,不要沉迷

标签:容器,data,etc,mysql,home,docker,安装
From: https://blog.51cto.com/u_14045290/6087096

相关文章

  • Sublime Test的安装与汉化
    sublimetest的安装与汉化http://www.sublimetext.com/下载地址在tool中安装packagecontrol插件在preferences中运行插件运行后点击installpackage搜索ChieseLoca......
  • mysql数据库的级联复制
    今天分享的是mysql数据库中的级联复制,要想实现mysql的级联复制首先要进行建立主从复制,在其基础上增加新的主机。范例:实现级联复制需要在中间的从服务器启用以下配置,实现中......
  • Linxu--软件安装
        我的yum连不了网,fuck ......
  • 升级mysql
    1.先备份之前的数据库进入mysqldump-u用户-p--all-databases>保存备份文件的路径及sql结尾的文件如:mysqldump-uroot-p--all-databases>D:\Backup.sql2.关......
  • MySQL8.0 存储引擎(InnoDB )buffer pool的实现原理
     数据库为了高效读取和存储物理数据,通常都会采用缓存的方式来弥补磁盘IO与CPU运算速度差。InnoDB作为一个具有高可靠性和高性能的通用存储引擎也不例外,BufferPool就是......
  • mysql生成随机日期
    生成一天内随机时间selectsec_to_time(rand()*86400);生成一天内随机时间,floor取整秒selectsec_to_time(floor(rand()*86400));生成00:00:00到01:00:00之......
  • Ubuntu如何安装deb安装包
    下载deb包到某文件夹在某文件夹右键“在这里打开终端”,此时可以看到,终端里的路径就是该文件夹的路径为了保险起见,我们先执行下面的指令: sudoapt-getupdate......
  • mysql开启慢查询日志
    前言:mysql数据库默认没有开启慢查询日志,需要我们手动去设置这个参数;慢查询,它的主要作用是定位那些执行时间比较长的sql语句,运行时间超过long_query_time值的SQL(long_query_......
  • mysql查询近N天的数据
    今天select*from表名whereto_days(时间字段名)=to_days(now());昨天SELECT*FROM表名WHERETO_DAYS(NOW())-TO_DAYS(时间字段名)<=17天SELECT*F......
  • MySQL根据经纬度和距离查询最近的数据
    [lat]:输入的纬度[lon]:输入的经度[distance]:查询距离内的数据,单位mSELECT*FROM(SELECTidlon,lat......