使用Docker部署MySQL[通俗易懂]

使用Docker部署MySQL[通俗易懂]在Docker下部署MySQL

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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

1、拉取mysql

最新版本mysql:

docker pull mysql:latest

Jetbrains全家桶1年46,售后保障稳定

拉取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

使用Docker部署MySQL[通俗易懂]
进入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: 只允许登录–其它什么也不允许做。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226771.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker 运行tomcat_docker和tomcat区别

    docker 运行tomcat_docker和tomcat区别在学习狂神的docker内容网络学习这一步的时候,按照步骤启动tomcat镜像,但是执行ipaddr之后发现下面问题,经过分析这说明我们下载的Tomcat镜像是精简版的,利用这个镜像去打开一个容器的时候发现没有ipaddr这个命令。所以到导致我们上述报错。上图执行的命令敲错了,重新执行aptinstall-yiproute2…

    2022年7月27日
    10
  • docker 拉取镜像_docker启动镜像命令

    docker 拉取镜像_docker启动镜像命令docker镜像网站官网https://hub.docker.com/网易蜂巢https://id.163yun.com/需要的登录daocloudhttp://hub.daocloud.io/不需要登录公司内部私服:需要添加配置需要在/etc/docker/daemon.json(如果不存在,则手动创建)添加下面一段话 { “registry-mirrors”:[“https://registry.docker-cn.com”], “insecure-

    2022年9月22日
    3
  • 宿主机ping不通docker容器_kali虚拟机ping不通

    宿主机ping不通docker容器_kali虚拟机ping不通问题描述:  Docker网络模式分为四种,一般我们不设置时默认为bridge单桥模式,容器使用独立的networkNamespace,并连接到docker0虚拟网卡中。通过docker0网桥以及Iptablesnat表配置与宿主机通信。  此时在堡垒机上进行测试,利用busybox进行测试:#拉取镜像dockerpullbusybox#运行容器dockerrun-itd–namebusy_bridgebusybox  指令dockernetworkinspect

    2022年8月21日
    13
  • docker pycharm 连接_pycharm远程连接docker开发[通俗易懂]

    docker pycharm 连接_pycharm远程连接docker开发[通俗易懂]1配置docker服务端(c/s架构)允许远程客户端连接-1vim/lib/systemd/system/docker.service…#ExecStart=/usr/bin/dockerd-Hfd://–containerd=/run/containerd/containerd.sockExecStart=/usr/bin/dockerd-Htcp://0.0.0.0:2…

    2022年8月27日
    5
  • docker导出容器为镜像_docker如何将容器打包成镜像

    docker导出容器为镜像_docker如何将容器打包成镜像1、docker镜像、容器导出方式dockersave#IDor#Namedockerexport#IDor#Name2、save和export区别(1)、对于DockerSave方法,会保存该镜像的所有历史记录(2)、对于DockerExport方法,不会保留历史记录,即没有commit历史(3)、dockersave保存的是镜像(image),dockerexport保存的是容器(container);(4)、dockerload用来载入镜像包,dock

    2025年9月18日
    3
  • docker 安装 Mysql 5.7[通俗易懂]

    docker 安装 Mysql 5.7[通俗易懂]1.安装mysql5.7docker镜像拉取官方mysql5.7镜像dockerpullmysql:5.7查看镜像库dockerimages2.创建mysql容器在本地创建mysql的映射目录mkdir-p/root/mysql/data/root/mysql/logs/root/mysql/conf在/root/mysql/con…

    2022年10月10日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号