Docker 安装 MySQL8.0

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: Docker 安装 MySQL8.0


一、搜索拉取镜像

docker search mysql
docker pull mysql #不写版本号 默认拉取最新版本
docker pull mysql:8.0.21 #写版本号,则拉取确定的版本

1704465185922.jpg

二、查看镜像

docker images

1704465188060.jpg

三、启动镜像

docker run  -d  \
--name mysql8 \
--privileged=true \
--restart=always \
-p 3310:3306 \
-v /home/mysql8/data:/var/lib/mysql \
-v /home/mysql8/config:/etc/mysql/conf.d  \
-v /home/mysql8/logs:/logs \
-e MYSQL_ROOT_PASSWORD=123456 \
-e TZ=Asia/Shanghai mysql \
--lower_case_table_names=1

记住 `` 后面不能有空格,不然会提前执行命令,导致执行失败,已踩坑。

1704465192112.jpg

命令看起来很长,但其实分析起来是非常简单的。

  • --name mysql8:给容器命名
  • --privileged=true
  • --restart=always:服务器启动时,自启动
  • -p 3310:3306:端口映射,第一个 3310 是映射出去的端口,第二个 3306 是这个容器的端口
  • 远程访问:IP 地址:3310 即可,如果是本地虚拟机就是 虚拟机 IP:3310
  • 注意:服务器上记得打开安全组,虚拟机上则记得注意防火墙
  • -v /home/mysql8/data:/var/lib/mysql:文件挂载, : 前为宿主机的目录位置,后为容器内文件对应位置
  • -e MYSQL_ROOT_PASSWORD=123456:环境变量设置,此处是设置 ROOT 用户登录密码
  • -e TZ=Asia/Shanghai mysql:此处是设置 MySQL 的时区,请注意这点,有时候你可能会发现你的服务器时区和你当前的电脑的时区是不一样的,这很有可能有一些隐藏问题噢。此处的 mysql为镜像名。
  • --lower_case_table_names=1:让表名忽略大小写

补充:

--lower_case_table_names=1    :忽略大小写,docker mysql默认区分大小写的
注:参数顺序一定要对,--lower_case_table_names=1要加在镜像名后面,镜像名前面是参数,后面是mysql配置

查看MySQL官方文档,有记录:

lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.

另外只有在初始化的时候设置 lower_case_table_names=1 才有效

四、检查启动情况

1.查看镜像

docker ps  # 查看所有正在运行的容器
docker ps -a  #-a 表示查看所有容器 包括未删除的历史容器

1704465209691.jpg

2.查看日志

docker logs [容器名|容器id] #查看容器的执行日志

1704465319482.jpg

查看实时日志

docker logs  [容器名|容器id] -f

具体的参数有几个:

--details        Show extra details provided to logs
-f, --follow     Follow log output
--since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string    Number of lines to show from the end of the logs (default "all")
-t, --timestamps     Show timestamps
--until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-f / --follow 跟踪输出日志
--since  显示自时间戳(例如2013-01-02T13:23:37Z)或相对(例如42分钟为42m)开始的日志 
-- details 显示提供给日志的额外详细信息 
-n, --tail  从日志末尾开始显示的行数(默认为"all")
-t,-- timestamps 显示时间戳
--until 显示时间戳(如2013-01-02T13:23:37Z)或相对(如42分钟42m)之前的日志

3.容器交互

像这种简单的,就是用来测试的,像是启动个 centos 的容器,进去还可以玩的更好。

docker exec -it [容器名|容器id] bash

1704465290224.jpg

以往在 mysql 5.0的时候,大家还会去说支持以下远程连接,但是在docker中,其实它是默认支持远程连接的。

所以其实可以不用执行下面的命令,也可以远程连接。

进入容器的目的是让mysql支持远程连接,

我在网上看到有些人说,默认支持远程连接,但是我测试了,行不通,还是需要通过以下命令修改:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

1704465278978.jpg

flush privileges;

1704465241526.jpg

连接测试,注意我开放的端口就是3310,并非3306哈,记得开安全组规则。


4.遇到错误

[root@crush mysql8]# docker run -it -d --name=mysql8  -v /home/mysql8/data/:/var/lib/mysql -v /home/mysql8/config/:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql --lower_case_table_names=1
9bc3479694ce1356c81b5caba3dcafb85b25dc93abb50cca5a29b0172dba8adf
[root@crush mysql8]# docker logs 9bc
2022-07-14 13:24:37+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started.
2022-07-14 13:24:37+08:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
  command was: mysqld --lower_case_table_names=1 --verbose --help --log-bin-index=/tmp/tmp.AYT8xnMNTv
  mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory)
mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 36.
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

1704465249190.jpg

原因因为 Centos7 安全给 linux禁止了一些安全权限,导致mysql和mariadb在进行挂载/var/lib/mysql的时候会提示如下信息。

解决方法在docker run中加入 --privileged=true 给容器加上特定权限。


其实还遇到一个小问题,但是没有找到产生的原因,解决的方式也很玄学......

出错了的话,就是暂停删除。

docker stop [容器名|容器ID]
docker rm [容器名|容器ID]

五、自言自语

今天想弄两个版本的mysql,准备再重新学习 mysql,所以就在服务器上整了个8.0的版本的。

这篇严格说起来算是复习篇。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL源码编译安装
本文详细介绍了MySQL 8.0及8.4版本的源码编译安装全过程,涵盖用户创建、依赖安装、cmake配置、编译优化等步骤,并提供支持多Linux发行版的一键安装脚本,适用于定制化数据库部署需求。
852 4
MySQL源码编译安装
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
602 4
MySQL二进制包安装
|
4月前
|
安全 关系型数据库 MySQL
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
本文详细介绍在openSUSE系统上通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,包括下载地址、RPM包解压、GPG密钥导入、使用rpm或zypper命令安装及服务启动验证,涵盖初始密码获取与安全修改方法,适用于无网络环境下的MySQL部署。
539 3
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
|
4月前
|
关系型数据库 MySQL Linux
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
本文介绍了在openSUSE系统上通过SUSE资源库安装MySQL 8.0和8.4版本的完整步骤,包括配置国内镜像源、安装MySQL服务、启动并验证运行状态,以及修改初始密码等操作,适用于希望在SUSE系列系统中快速部署MySQL的用户。
417 3
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
636 5
|
4月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
460 2
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
本文详细介绍了在Ubuntu 24.04、22.04、20.04及Debian 12系统上,通过离线DEB包安装MySQL 8.0和8.4版本的完整步骤。涵盖下载地址、依赖处理、dpkg安装顺序、配置方法及服务启动验证,确保用户可顺利部署MySQL数据库。
1828 0
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
|
4月前
|
运维 Ubuntu 关系型数据库
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
本文介绍了在Debian系列系统(如Ubuntu、Debian 11/12)中通过APT仓库安装MySQL 8.0和8.4版本的完整步骤,涵盖添加官方源、配置国内镜像、安装服务及初始化设置,并验证运行状态,适用于各类Linux运维场景。
1534 0
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)