Docker安装Mysql数据库

1. 前言

XXXXX

2. Docker中安装MySQL服务

以下以mysql8.2版本为例,mysql5.7的步骤也是一样的

2.1. 查看可用的MySQL版本

# 搜索镜像
docker search mysql

2.2. 拉取MySQL镜像

# 拉取镜像
docker pull mysql# 或者
docker pull mysql:latest

2.3. 查看本地镜像

使用以下命令来查看是否已安装了 mysql镜像

docker images

2.4. 运行容器

MySQL是常用的关系型数据库,一般的,希望它能永久的保存数据,哪怕是当容器被删除了数据也不要删除,此时就需要把主机文件夹挂载到容器上,这样可以保证即使容器删除后新建的MySQL容器可以使用之前的数据。

  • 先准备好本地的目录
mkdir -p /usr/local/mysql/log
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/conf
  • 挂载目录,启动容器
# Docker启动MySQL容器
docker run -p 3306:3306 --name mysql \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql

-p 3306:3306:指定宿主机端口与容器端口映射关系

-v:挂载主机文件夹 /usr/local/mysql/data 到 容器/var/lib/mysql 挂载点

-e:指定容器需要的变量

-it:表示交互式终端;

-d:后台运行mysql容器

注意:-v /usr/local/mysql/conf:/etc/mysql.d \ 这里对应的是mysql.d很多人都写成了conf,导致容器启动失败

2.5. 查看正在运行的容器

# 查看正在运行的容器
docker ps
# 查看所有的docker容器
docker ps -a

这个时候如果显示的是up状态,那就是启动成功了。如果是restarting,说明是有问题的。我们可以查看日志:

docker logs -f mysql

2.6. 查看容器内部

docker exec -it mysql /bin/bash

2.7. 授权root远程登录

  • 进入容器
docker exec -it mysql /bin/bash
  • 登录mysql
mysql -uroot -p
  • 查看用户、插件
mysql> use mysql;
Database changed
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
mysql> 

查看结果,root@‘localhost’也看到了root@’%‘root@’%‘`。已经有了远程登录root@’%',所以可以直接进行远程连接。

  • 直接退出吧

2.8. 在宿主机连接到容器的MySQL

# 用命令行测试端口连通性
[root@bogon ~]# nc -nv 127.0.0.1 3306
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:3306.
I
8.2.0
# 查看能不能连接上MySQL
mysql -u root -P 3306 -h 127.0.0.1 -proot
# 查看容器日志
docker logs -f mysql

2.9. 用Navicat连接容器的MySQL

  • 配置连接的参数

image.png

  • 连接上了

image.png

3. 授权root远程登录

  • 进入mysql容器
docker exec -it mysql /bin/bash
  • 登录mysql
mysql -uroot -p
mysql> use mysql
Database changed
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)mysql>

可以看到出厂就创建了root@'%'账号。如果没有就自行创建下把

  • 创建root@'%'账号
mysql> create user root@'%' identified by 'root';
Query OK, 0 rows affected (0.01 sec)mysql>
  • 授权所有权限给root@'%'账号
mysql> grant all on *.* to root@'%';
Query OK, 0 rows affected (0.00 sec)mysql> 

3.1. 取消密码强度限制

  • 卸载"验证密码"组件
mysql> UNINSTALL COMPONENT 'file://component_validate_password';
ERROR 3537 (HY000): Component specified by URN 'file://component_validate_password' to unload has not been loaded before.
mysql>

docker的mysql镜像默认没有安装

  • 卸载"验证密码"插件
mysql> UNINSTALL PLUGIN validate_password;
ERROR 1305 (42000): PLUGIN validate_password does not exist
mysql> 

docker的mysql镜像默认没有安装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259576.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于IDEA中maven的作用以及如何配置MAVEN

关于IDEA中maven的作用以及如何配置MAVEN 1、Maven是什么2、Idea中对于Maven的配置3、下载依赖时,Idea下方的显示3.1、Maven中央仓库的下载显示界面3.2、阿里云仓库的下载显示界面 4、Maven在Idea中的使用4.1、clean4.2、validate4.3、compile4.4、test(…

数据结构-线性表的链式存储结构

术语: 1.结点:数据元素的存储映像。有数据域和指针域两部分组成。 2.链表:n个结点由指针组成一个链表 3.结点只有一个指针域的链表,成为单链表或线性链表。 4.结点有两个指针域的链表,成为双链表。 5.首尾相接的链…

8 个顶级的 PDF 转 Word 转换器

PDF 是跨不同平台分发信息而不影响内容格式的好方法。但这种安全级别确实有其缺点。没有直接的方法来编辑 PDF 上的文本或内容。编辑 PDF 文档的唯一方法是将其转换为 Word 文档或其他可以编辑的文件类型。将 PDF 转换为 Word 是根据需要编辑 PDF 内容的最快方法。有许多免费的…

Python中的深拷贝和浅拷贝的区别

目录 一、深拷贝和浅拷贝的概念 二、Python中的深拷贝和浅拷贝实现 三、深拷贝和浅拷贝的区别及适用场景 四、如何选择深拷贝和浅拷贝 五、总结 在Python中,深拷贝和浅拷贝是非常重要的概念,它们在处理对象和数据结构时有着截然不同的行为。理解深拷…

MN316 OpenCPU丨HTTP使用介绍

HTTP(Hyper Text Transfer Protocol)即超文本传输协议,是一个简单的请求-响应协议,通常运行在TCP之上,它指定了客户端可能发送给服务器消息类型以及得到什么类型响应。HTTPS(Hyper Text Transfer Protoc…

Windows 系统,TortoiseSVN 无法修改 Log 信息解决方法

使用SVN提交版本信息时,注释内容写的不全。通过右键TortoiseSVN的Show log看到提交的的注释,右键看到Edit log message的选项,然而提交后却给出错误提示: Repository has not been enabled to accept revision propchanges; ask …

炫酷不止一面:探索JavaScript动画的奇妙世界(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

wps word中图片 一保存失真变糊

在wps中依次点击 文件-文字偏好设置-常规与保存 勾选不压缩文件中的图像 并 将默认目标输出设置为220ppi 即可

c# 中间件简说

一、什么是中间件 中间件是一种装配到应用管道以处理请求和响应的软件。是介于request与response处理过程之间的一个插件(一道处理过程),相对比较轻量级,并且在全局上会影响到request对象和response对象的属性。因为改变的是全局,所以需要谨…

log4j(日志的配置)

日志一般配置在resources的config下面的,并且Util当中的initLogRecord中的initLog()方法就是加载这个log4j.properties的. 首先先看log4j.properties的配置文件 log4j.rootLoggerdebug, stdout, Rlog4j.appender.stdoutorg.apache.log4j.Co…

数据可视化:解锁企业经营的智慧之道

在现代企业管理中,数据可视化已经成为了一项重要的工具。它不仅仅是简单地展示数据,更是提供了深入理解数据、做出更明智决策的方法。作为一名可视化设计从业人员,我经手过一些企业自用的数据可视化项目,今天就来和大家聊聊数据可…

同一个kmz数据同样的底图在QGIS上显示位置正常, 在Mars3d中显示就偏移了一些

问题: 1.同一个kmz数据同样的底图在QGIS上显示位置正常, 在网页中显示就偏移了一些 在qgis上的显示效果,和在mars3d的显示效果:数据明显存在偏移。 解决步骤: 1.查看了kmz数据,里面实际是tif图片数据,估…