使用Docker部署MySQL

2023-05-16

在 【Docker】 下部署,使用命令行进行拉取。

1、拉取mysql

最新版本mysql:

docker pull mysql:latest

拉取5.7版本mysql:

docker pull mysql:5.7

在这里插入图片描述

2、启动容器镜像

 docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Dl123456 -d mysql:5.7

【说明】

-p 13306:3306                      将容器的 3306 端口映射到主机的 3306 端口

--name my-mysql                     启动后容器名为 my-mysql  

-v $PWD/conf:/etc/mysql          将主机当前目录下的 conf/ 挂载到容器的 /etc/mysql       (conf目录为mysql的配置文件,不挂载也没问题)

-v $PWD/logs:/logs          将主机当前目录下的 logs 目录挂载到容器的 /logs           (logs目录为mysql的日志目录,不挂载也没影响)

-v $PWD/data:/var/lib/mysql     将主机当前目录下的data目录挂载到容器的 /var/lib/mysql (data目录为mysql配置的数据文件存放路径,这个还是建议挂载,是存储数据的,容器down掉,还能再次挂载数据。)

-e MYSQL_ROOT_PASSWORD=Dl123456   初始化 root 用户的密码

3、登录容器

docker exec -it my-mysql bash

ls


进入MySQl容器

使用的 docker exec 命令,-it是参数,bash表示创建一个交互界面
退出容器
方法一:如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器

方法二:如果使用exit退出,那么在退出之后会关闭容器

4、登录mysql

mysql -uroot -p --default-character-set=utf8

输入密码登陆即可
在这里插入图片描述
查看数据库

mysql> show databases;

在这里插入图片描述
设置能远程登录mysql

mysql> use mysql

输出

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

查看用户

mysql> select host,user from user;

在这里插入图片描述

设置root用户在任何地方进行远程登录,并具有所有库任何操作权限。
(暴露的攻击面太大)。

 给用于授予权限
grant all privileges on *.*  to 'root'@'%' ; 

修改用户的密码和加密方式

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

刷新

FLUSH PRIVILEGES;

下面是网上查到最多授权的写法,可能会报错或者无法连接

允许root用户在任何地方进行远程登录

mysql> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Dl123456';

允许root用户在任何地方进行远程登录,并具有所有库任何操作权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Dl123456' WITH GRANT OPTION;

刷新

FLUSH PRIVILEGES;
flush privileges;

如果现在还没有连接成功建议重启下Docker容器:

docker restart  [CONTAINER ID]

退出mysql数据库:

exit

【说明】
mysql 8.0版本以后 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。

从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。

客户端不支持新的加密方式。

更改加密方式
update user set password_expired = "Y"where user="root";
ALTER USER'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Dl123456';

远程连接

允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限
在本机先使用root用户登录mysql进行授权操作:

 mysql -u root -p"youpassword" 
GRANT ALL PRIVILEGES ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword" WITH GRANT OPTION;

重载授权表: FLUSH PRIVILEGES; 退出mysql数据库: exit

允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限,
在本机先使用root用户登录mysql 进行授权操作:

 mysql -u root -p"youpassword" 
GRANT select,insert,update,delete ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword";

重载授权表: FLUSH PRIVILEGES; 退出mysql数据库: exit

删除用户授权,需要使用REVOKE命令,

先在本机登录mysql进行授权操作:

mysql -u root -p"youpassword"
GRANT select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152" IDENTIFIED BY "youpassword"; 
 REVOKE privileges ON 数据库[.表名] FROM user-name; 
 REVOKE all on TEST-DB from test-user;

【注】该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。

最后从用户表内清除用户:

DELETE FROM user WHERE user="test-user"; 

重载授权表: FLUSH PRIVILEGES; 退出mysql数据库: exit

MYSQL权限详细分类:
全局管理权限

FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。

数据库/数据表/数据列权限

ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。

特别的权限

ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Docker部署MySQL 的相关文章

  • C#:SQL 查询生成器类

    在哪里可以找到好的 SQL 查询构建器类 我只需要一个简单的类来构建 SQL 字符串 仅此而已 我需要它用于 C 和 MySql 我真的不需要像 Linq 或 NHibernate 这样的东西 谢谢 由于 Google 将我引导至此页面 我
  • MySQL+子串怎么做? + 替换?

    我不太擅长 SQL 希望能够变得更好 我在尝试执行某些表操作时遇到一些麻烦 我希望能够从下面的 ProgUID 列中选择子字符串 就像是 SUBSTRING table ProgUID 3 12 这将为我提供 ProgUID P CAMVE
  • 通过连接从两个表中删除?

    我有两个表如下 tbl1 tbl2 id article id title image whole news tags author older datetime 其中 tbl1 id gt tbl2 article id 如何从两个表中删
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • PHP PDO相关:更新SQL语句未更新数据库内容

    我正在尝试使用准备好的语句来实现更新语句PHP http en wikipedia org wiki PHP脚本 但它似乎没有更新数据库中的记录 我不确定为什么 所以如果您能分享一些见解 我将不胜感激 Code query UPDATE D
  • Mysql innoDB 不断崩溃[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的数据库 mysql 服务器不断崩溃 重新启动 我不知道该怎么办 我不断在 dbname org err 文件中收到以下内容 13120
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • MYSQL - 查找最近的前一天

    我可以以某种方式 不使用 PHP 找到一周中最近的前一天日期吗 Like 最近的上一个星期二的日期是哪一天 CURDATE INTERVAL WEEKDAY CURDATE wday IF WEEKDAY CURDATE gt wday 0
  • Hibernate 对集合的查询过滤器

    我想执行以下查询 from Item i where i categoryItems catalogId catId 然而 这会产生以下异常 非法尝试取消引用集合 所以我用谷歌搜索 找到了这个 Hibernate 论坛帖子https for
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • docker repo 解决映像构建期间的错误错误(检查存储库文件)

    我在构建 docker 映像时遇到问题 并尝试了不同的 DNS 选项 但似乎运气不佳 Docker版本1 9 1 构建a34a1d5 回购还活着 为了运行我使用的容器docker run dns 192 168 1 1 d ti name
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • 如何在Mysql中仅将不同的值从一个表复制到另一个表?

    我有一个大约 2 5GB 的 MySql 数据库 表 A 具有以下列 anoid query date item rank url 我刚刚创建了另一个仅包含列的表 b query and date 我想在查询列中插入所有不同的记录 及其各自
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • 带有 npm 启动脚本的 Nodejs 应用程序

    我对nodejs很陌生 在我的docker化环境中 我想为nodejs应用程序提供appdynamics支持 这要求每个应用程序都要求将以下内容作为其应用程序的第一行 require appdynamics profile controll
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • 如何从 Docker Hub 删除存储库

    如何从 Docker Hub 完全删除存储库 Docker 正在快速发展 他们的网站也是如此 这是从 docker hub Web 界面删除存储库的最新方法 首先 确保您已登录 hub docker com Simple 单击顶部的存储库链

随机推荐

  • 【程序设计思维与实践 Week5 作业D】滑动窗口

    题目描述 xff1a 有一个长度为 n 的数列和一个大小为 k 的窗口 窗口可以在数列上来回移动 现在 我们想知道在窗口从左往右滑的时候 xff0c 每次窗口内数的最大值和最小值分别是多少 例如 xff1a 数列是 1 3 1 3 5 3
  • 【Week8 CSP-M2 C】咕咕东的奇妙序列

    题目描述 格式说明 样例输入 样例输出 数据规模 思路 由题知 xff0c 这个无限序列的第i部分是从1 i的子序列 xff0c 该解法的大体思路是我们首先确定要查询的项 设为k项 在无限序列的第几部分 第几个子序列 xff0c 然后再从这
  • 【Week 8 作业A】区间选点II

    题目描述 给定一个数轴上的 n 个区间 xff0c 要求在数轴上选取最少的点使得第 i 个区间 ai bi 里至少有 ci 个点 输入格式 输入第一行一个整数 n 表示区间的个数 xff0c 接下来的 n 行 xff0c 每一行两个用空格隔
  • 【Week 8 作业 B】猫猫向前冲

    题目描述 众所周知 xff0c TT 是一位重度爱猫人士 xff0c 他有一只神奇的魔法猫 有一天 xff0c TT 在 B 站上观看猫猫的比赛 一共有 N 只猫猫 xff0c 编号依次为1 xff0c 2 xff0c 3 xff0c xf
  • 【Week 9 作业 A】咕咕东的目录管理器

    题目描述 咕咕东的雪梨电脑的操作系统在上个月受到宇宙射线的影响 xff0c 时不时发生故障 xff0c 他受不了了 xff0c 想要写一个高效易用零bug的操作系统 这工程量太大了 xff0c 所以他定了一个小目标 xff0c 从实现一个目
  • 【Week 11 作业】必做题

    Week 11 必做题 A 必做题 1题目描述输入格式输出格式输入样例输出样例思路代码 B 必做题 2题目描述输入格式输出格式数据范围样例输入样例输出思路代码 C 必做题 3题目描述输入格式输出格式样例输入样例输出思路代码 D 必做题 4题
  • 【Week 12 作业】必做题

    Week12必做题 必做题1题目描述输入格式输出格式输入样例输出样例代码 必做题2题目描述输入格式输出格式输入样例输出样例思路注意代码 必做题3题目描述输入格式输出格式输入样例输出样例思路代码 必做题1 题目描述 给出n个数 xff0c z
  • 【Week 13 作业E】TT的神秘任务3

    题目描述 TT 猫咖的生意越来越红火 xff0c 人越来越多 xff0c 也越来越拥挤 为了解决这个问题 xff0c TT 决定扩大营业规模 xff0c 但猫从哪里来呢 xff1f TT 第一时间想到了神秘人 xff0c 想要再次通过完成任
  • 【Week 14 作业E】Q老师度假

    题目描述 忙碌了一个学期的 Q老师 决定奖励自己 N 天假期 假期中不同的穿衣方式会有不同的快乐值 已知 Q老师 一共有 M 件衬衫 xff0c 且如果昨天穿的是衬衫 A xff0c 今天穿的是衬衫 B xff0c 则 Q老师 今天可以获得
  • Git安装和Azure DevOps使用

    Git安装和Azure DevOps使用 为了方便团队开发 xff0c 需要用到Azure DevOps作为代码仓库 xff0c DevOps需要用到Git环境 xff0c 如果你已经安装git请跳过前两步 本次重点是介绍DevOps克隆项
  • 【Week 15 作业B】ZJM与生日礼物

    题目描述 ZJM 收到了 Q老师 送来的生日礼物 xff0c 但是被 Q老师 加密了 只有 ZJM 能够回答对 Q老师 的问题 xff0c Q老师 才会把密码告诉 ZJM Q老师 给了 ZJM 一些仅有 01 组成的二进制编码串 他问 ZJ
  • 【Week 15 作业C】ZJM与纸条

    题目描述 ZJM 的女朋友是一个书法家 xff0c 喜欢写一些好看的英文书法 有一天 ZJM 拿到了她写的纸条 xff0c 纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物 ZJM 想知道自己收到的礼物是不是就是她送的 xff0
  • 【Week 16】CSP-M4

    TT数鸭子 题目描述 输入输出描述 样例 思路 对每个数字按数位进行遍历 xff0c 求取不重复数字个数即可 代码 span class token macro property span class token directive key
  • Windows 版Oracle 数据库(安装)史上最详细过程

    Oracle 11 g数据库的卸载步骤 Oracle 11 g数据库的安装步骤 首先到官网上去下载oracle64位的安装程序 第一步 xff1a 将两个datebase文件夹解压到同一目录中 当下载完成后 它里面是两个文件夹 span c
  • Windows 版Oracle 数据库(卸载)史上最详细过程

    上一篇文章已经详细说明了 Oracle 11 g数据库的安装步骤 这次我们再来详细说明一下卸载 xff0c 无论是不想继续使用 xff0c 还是因为安装过程出现错误失败 xff0c 我们都需要将其卸载重新安装 xff0c 卸载此时尤为重要
  • Oracle 11 g 数据库使用教程以及使用过程中的问题

    2020 12 21 更新bug PLSQL 登录oracle数据库出现 无法解析指定的连接标识符 错误 解决办法 xff1a 问题就是安装完client后 xff0c 出在tnsnames oRA xff0c 你需要把tnsnames o
  • IIS 搭建简单网站 并 发布项目

    IIS说的是互联网信息服务 全名 xff1a Internet Information Services 是微软提供的基于运行Windows的互联网基本服务 基本的windows版本都支持IIS配置 xff0c XP win8等家庭版的II
  • Fiddler 抓包工具使用详解

    Fiddler是一个蛮好用的抓包工具 xff0c 可以将网络传输发送与接受的数据包进行截获 重发 编辑 转存等操作 也可以用来检测网络安全 Fiddler xff1a 译名 小提琴手 xff0c 由Eric开发 xff0c 曾就职微软 Fi
  • Xmanager 5 (Windows 远程Centos工具 )

    Xmanager是一款小巧 便捷的浏览远端X窗口系统的工具 xff0c 是市场上领先的PC X服务器 xff0c 可将X应用程序的强大功能带入Windows环境 Xmanager xff0c 可以将PC变成X Windows工作站 xff0
  • 使用Docker部署MySQL

    在 Docker 下部署 xff0c 使用命令行进行拉取 1 拉取mysql 最新版本mysql xff1a span class token function docker span pull mysql latest 拉取5 7版本my