• 热门搜索 热门搜索
菜单

您现在的位置是:博客 > 文章详情文章详情

Docker 安装mysql

原创
时间2024/01/23 01:44:13 发布 预览数量372
分类: mysql 标签: mysql

一、创建mysql 容器

docker run \
-d \# 后台运行
--restart=always \#总是跟随docker启动
--privileged=true\#获取宿主机root权限
-p 13306:3306 --name mysql \# 容器与主机映射端口为,主机13306,容器3306
-v /mysql/log:/var/log/mysql \# 容器运行后的名称
-v /mysql/data:/var/lib/mysql \# mysql 目录挂载
-v /etc/localtime:/etc/localtime:ro \#让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
-v /mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=password \# 设置mysql实例的密码为root
mysql:8.1.0

注意:此处使用的是 13306 端口,故云服务器需要开启此端口,否则无法访问的。

常用指令

# 查询容器
docker ps 

# 进入容器
docker exec -it 容器ID bash

# 登录Mysql 
mysql -u root -p

# 查询字符集
show variables like 'character%';

二、设置字符集

一般情况下,我们都会手动指定一个字符编码, 因为默认的字符集容易导致中文乱码,首先我们查看一下字符的编码

1、查看字符集列表

[root@VM-8-16-opencloudos conf]# docker ps 
CONTAINER ID   IMAGE                          COMMAND                  CREATED             STATUS             PORTS                                                    NAMES
7010f9495381   mysql:8.1.0                    "docker-entrypoint.s…"   About an hour ago   Up About an hour   33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp   mysql
871f292cae91   converts.web.entry             "dotnet Converts.Web…"   2 weeks ago         Up 2 weeks         5200/tcp, 0.0.0.0:5200->80/tcp, :::5200->80/tcp          converts.web.entry
8809c2fd2701   databack/mysql-backup:latest   "/entrypoint"            3 weeks ago         Up 3 weeks                                                                  mysql-backup-baidu
[root@VM-8-16-opencloudos conf]# docker exec -it 7010f9495381 bash
bash-4.4# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.1.0 MySQL Community Server - GPL

Copyright (c) 2000, 2023, 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.

mysql> show variables like 'character%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | latin1                         |
| character_set_connection | latin1                         |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | latin1                         |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.1/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.01 sec)

mysql>

Docker 安装mysql

2、修改字符集

Docker 安装mysql

my.cnf 文件内容

[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

3、再次查询

Docker 安装mysql

拓展—-安装异常

这个错误正常安装是不会出现的,正常安装直接跳过(由于我之前有安装过mysql,所以在mysqld检查配置时失败了

2023-11-24 01:18:49+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.1.0-1.el8 started.
2023-11-24 01:18:49+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
        command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.VsNsrLRKKC
        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!

1、解决办法

找到并删除存在的 mysql启动配置文件

# 查找相关文件
sudo find / -name my.cnf 

# 删除
rm $(find / -name my.cnf)

Docker 安装mysql

删除完成之后, 需要吧之前失败的容器删除或者修改新容器的名称即可。否则会运行失败。

版权声明:本文为Converts的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://www.converts.cn/article/1251269.html

暂无评论

暂无评论

目录

推荐阅读

  • 移除Linux系统启动时的等待时间

    一、前言 VMware 虚拟机中安装了很多Linux 系统,每次启动的时候, 都卡在系统选择的界面上,除非手动选择, 否则要等很久才会进入系统,如下图所示: ![移除Linux系统启动时的等待时间](/ArticleFile/2024-06-24/e3ab02212cc946bd9c23159895177fb3.png '移除Linux系统启动时的等待时间') 二、关闭系统等待的事件 我们

  • GitLab 私有化部署

    一、GitLab 概述 git作为目前最流行的代码管理工具,已经成为了程序员必备的技能。虽然目前有 github(对国人不太友好) 、gitee 两个比较大的代码托管平台。但是出于各种原因,搭建自己的私有代码平台也成了一部分开发人员的选择。针对这种需求,这里为大家介绍的是其中的佼佼者gitlab,也是我们公司内部正在使用的一个代码管理平台。 GitLab是一个基于Git的开源代码管理平台,它

  • 云服务器购买按量付费实例,并搭建私有网络图解

    一、前言 最近在自学 k8s 集群化部署, 奈何云服务器包年包月太贵了, 学习成本飙升。好在各大云服务商支持按量计费 , 接下来就带大家一起过一下购买流程,并且使用私有网络。 二、私有网络 在购买云服务器之前,先了解下什么是私有网络。官网给出的解释是:私有网络(Virtual Private Cloud,VPC)是一块在云服务器上自定义的逻辑隔离网络空间,可以使云服务器, 云数据库资源构建逻

  • Docker 部署FastTunnel,实现内网穿透

    一、前言 最近在学习搭建Elasticsearch集群,但是发现云服务(2核4G)资源根本就不够用,部署上去就直接宕机了。想着服务器资源太贵, 家里刚好有一台64G内存的闲置电脑。不如做一个内网穿透,可以远程访问。工作学习两不误。其实目前市面上已经有很多穿透工具了,比如向日葵~~ ,但是奈何带宽太小了,免费的才1M~~~ 二、什么是 FastTunnel FastTunnel 是用.net

  • IP地址和子网掩码的关系

    一、概述 IP地址(Internet Protocol Address)和子网掩码(Subnet Mask)是计算机网络中两个核心的概念,它们共同工作以确保数据能够正确地在复杂的网络环境中传输到目标设备。 二、IP地址 `IP地址`是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。它是一个32位的二进制数,但是在习惯上,我们

  • 修改Docker默认的存储驱动程序目录

    一、前言 今天使用jenkins对程序进行更新的时候,发现更新失败。经排查是因为系统磁盘满了,然而通过堡垒机看了下,系统空间还有很多,于是看了下系统分区: ![修改Docker默认的存储驱动程序目录](/ArticleFile/2024-06-06/444ede8a1b1b42058db18690fa995952.png '修改Docker默认的存储驱动程序目录') ![修改Docker默认

  • Windows 安装git的详细安装步骤 ,以及TortoiseGit 图形化工具

    一、前言 `Git` 是一个开源的分布式版本控制系统,用于有效、高速地处理从很小到非常大的项目版本管理。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不需要服务器端软件支持。 二、安装Git 1、Git 下载地址 [Git 下载地址](https://git-scm.com/downloads "Git 下载地址") ![Windows

  • 免费的 GIF 录屏工具下载

    一、前言 在写博客或者文档的时候,经常需要附上一些gif动图,可以让快速展示操作流程。下面`小C`就介绍几款我经常用到的几款免费的gif工具。 二、免费的Gif工具 1、GifCam GifCam是一款免费绿色软件,它能够录制屏幕上的动态内容,并将其保存为GIF动画图像。用户可以调整录制区域、帧速率等参数,以满足不同的录制需求。除了连续录制外,GifCam还支持单帧录制功能。用户可以手

  • 对比MySQL不同版本下表结构和数据存储的差异

    一、前言 在开始之前, 我们需要先了解一下 MySQL 的存储引擎有哪些。 `MySQL`常用的存储引擎有 InnoDB 和 MyISAM,而且两者都有各自的特点,适用于不同的场景。下面是对这两种存储引擎的简要对比: - InnoDB存储引擎 - 支持事务处理 - 支持行级锁 - 支持外键约束 - 可以根据事务日志实现数据恢复 - MyISAM存储引擎 - MyISAM 的读取性能

  • Linux系统定时任务 -- crontab命令

    一、前言 有时候需要在 Linux 系统中定时执行一些任务,我们就需要使用 `crontab` 命令创建定时任务。crontab 是“cron table”的缩写,其功能是管理定时计划任务。在Linux系统中的crond是一个定时计划任务服务,用户只要能够按照正确的格式(分、时、日、月、星期、命令)写入到配置文件中,那么就会按照预定的周期时间自动地执行下去,而crontab命令则是用于配置的工具

加载中