Docker安装MySQL 并挂载数据及配置文件,设置远程访问权限

这篇具有很好参考价值的文章主要介绍了Docker安装MySQL 并挂载数据及配置文件,设置远程访问权限。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现docker安装mysql,并挂载数据及配置文件,设置远程访问权限,并且介绍docker一些命令的使用。

拉取景象

拉取mysql 8版本

docker pull mysql:8

挂载数据卷以及配置文件

虽然官网上说默认配置文件在/etc/mysql/my.cnf但是有些镜像的配置文件实际位置不确定,不如我的默认配置文件在/etc/my.cnf,所以创建临时镜像查询默认配置文件的位置,然后复制出来,用来绑定本地配置文件。

1. 为了获取默认mysql配置文件,创建一个临时容器

每个人部署的 MySQL 内,可能文件路径不一致。我们可以先创建个测试的 MySQL 容器,然后再根据查找出的文件具体路径位置,重新创建我们符合我们需求的 MySQL 容器,命令如下:

docker run --name mysqltest \
-p 3307:3306 -e MYSQL_ROOT_PASSWORD=root \
-d mysql
2. 进入Docker容器内
docker exec -it mysqltest bash
3. 确定Docker内 MySQL 文件相关路径

找到配置文件的默认位置。

# 查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf
# 显示如下,意思是路径按优先排序,会是在以下路径里:
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
# 配置文件的路径不一定都一样,有些博客介绍的位置是在/etc/my.cnf。而Ubuntu系统上,实际存在位置是在/etc/mysql/my.cnf
4. 创建本地路径并挂载Docker内数据

接下来,我们需要在物理机上,创建指定好一个数据和配置文件的挂载路径。

创建两个文件夹存放mysql的配置文件和数据

mkdir -p /docker/mysql/config && mkdir -p /docker/mysql/data

创建好本地的挂载数据路径后,我们再将临时容器里 MySQL 的配置文件复制到该路径。日后需改配置,直接在挂载路径的配置文件上修改即可。

 docker cp mysqltest:/etc/my.cnf /docker/mysql/config/

创建 MySQL 容器并启动

docker run \
--name mysql \
-v /docker/mysql/config/my.cnf:/etc/my.cnf \
-v /docker/mysql/data:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123 \
--restart=on-failure:3 \
-d mysql:8
  • –name:为容器指定一个名字
  • -p:指定端口映射,格式为:主机(宿主)端口:容器端口
  • -e:MYSQL_ROOT_PASSWORD=“xxx”,设置环境变量,为root用户设置密码
  • –restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
  • -v:绑定挂载
  • -d:后台运行容器,并返回容器 id

MySQL8.0设置远程访问权限

  1. 从物理机进入mysql容器
#进入容器
docker exec -it mysql bash
  1. 登录MySQL
mysql -u root -p
  1. 选择 mysql 数据库
use mysql;
  1. 在 mysql 数据库的 user 表中查看当前 root 用户的相关信息
select host, user, authentication_string, plugin from user; 

执行完上面的命令后会显示一个表格

查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。

  1. 授权 root 用户的所有权限并设置远程访问
GRANT ALL ON *.* TO 'root'@'%';

GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。

  1. 刷新权限
flush privileges;
  1. 查看 root 用户的 host
select host, user, authentication_string, plugin from user; 

再次执行步骤 2,root 用户的 host 已经变成 %,说明我们的修改已经成功,可以远程访问了。

注意事项

1. 针对现有数据库创建容器

如果您使用mysql已经包含数据库的数据目录启动容器实例,$MYSQL_ROOT_PASSWORD则应从运行命令行中省略该变量;

2. 创建数据库转储

同一个容器中使用docker exec和运行该工具,导出mysql所有数据写入本地文件,类似于以下内容:

docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
3. 从转储文件恢复数据

用于恢复数据。可以使用docker exec带有标志的命令-i,类似于以下内容:文章来源地址https://www.toymoban.com/news/detail-611661.html

docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql

到了这里,关于Docker安装MySQL 并挂载数据及配置文件,设置远程访问权限的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows docker mysql8.0 挂载配置文件不生效的问题

    原因 mysql 8.0 遇到sql_mode=only_full_group_by的问题,于是就自定义my.cnf 去掉only_full_group_by,修改my.cnf 文件后,进行映射启动 docker run 命令 docker run -p 3306:3306 --privileged=true --restart=always -d --name axsc-mysql -v E:/docker/mysql8.0/log:/var/log/mysql -v E:/docker/mysql8.0/data:/var/lib/mysql -v E:/docker/mysql8.0

    2024年02月13日
    浏览(51)
  • Docker配置Mysql并设置远程连接

    Linux、Docker、云服务器 默认拉取最新版 docker pull mysql ,指定版本 docker pull mysql:版本号 拉取成功的话,输入 docker images 会出现如下情况 首先开放安全组 输入 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name my_mysql mysql 参数解读 输入 docker ps ,运行成功返回如下 首先 docker ex

    2024年02月03日
    浏览(44)
  • docker配置文件挂载(容器数据管理)

    在之前的nginx案例中,修改nginx的html页面时,需要进入nginx内部。并且因为没有编辑器,修改文件也很麻烦。 这就是因为容器与数据(容器内文件)耦合带来的后果。 要解决这个问题,必须将数据与容器解耦,这就要用到数据卷了。 数据卷(volume) 是一个虚拟目录,指向宿

    2024年02月15日
    浏览(63)
  • Docker启动Elasticsearch(挂载数据、配置文件、插件)

    docker pull elasticsearch:7.4.2 注意:启动前需要在服务器新建下列文件夹,并且文件夹的权限要改成使用 chmod -R 777 file 修改文件读写权限 先进入容器,然后执行 访问ip:9200即可。

    2024年02月14日
    浏览(37)
  • docker简介以及docker安装redis、mysql并实现数据挂载宿主机

    1、简介 官网 docker官网:http://www.docker.com 仓库 Docker Hub官网: https://hub.docker.com/ 2、前提 2.1 前提条件: Docker必须部署在Linux内核的系统上 目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上, 要求系统为64位、Linux系统内核版本为 3.8以上 2.2查看自己的内核

    2024年02月04日
    浏览(51)
  • docker简单安装部署mysql,并配置远程连接

    一、首先在docker hub找到mysql docker hub上查询相关的镜像,里面会附带很多docker启动配置的知识 二、拉取mysql 三、初次创建运行mysql容器,将关键目录挂载到自己的目录中 注意:这边因为我使用的是最新版的msyql,所以会多一个目录 -v /home/mysql/mysql-files:/var/lib/mysql-files 四、修改

    2023年04月08日
    浏览(53)
  • Docker安装Redis 配置文件映射以及密码设置

    安装直接docker pull redis即可,默认redis最新版 设置两个配置文件路径 conf配置文件 配置出行方向 重启服务器,重启镜像 注意:为什么没配置用户名? redis以前版本也只支持单用户访问,也就是没有用户名这个概念。auth认证时候只要auth +密码就行,默认是auth+密码 在Redis6.0之前

    2024年02月02日
    浏览(48)
  • MySQL mysql-8.0.35-winx64 下载/配置/初始化/安装/打开/登陆/修改密码/退出/卸载/设置远程连接

    #---------------------------------------------------------------------------------------------------------------------------- [mysqld] #设置3306端口 port=3306 #设置mysql的安装目录 basedir=D:mysql-8.0.35-winx64database #设置mysql数据库的数据的存放目录 datadir=D:mysql-8.0.35-winx64databasedata #允许最大连接数 max_connections

    2024年02月04日
    浏览(49)
  • docker部署mysql并挂载外部文件详细步骤

    1、去搜索mysql的镜像 2、选择自己需要的版本对应的镜像,拉取镜像 3、创建外部挂载的文件并进行授权 4、创建容器并启动 5、命令说明 搭建好后就可以用navicat远程连接了(开放服务器的连接端口或者关闭防火墙) 6、进入容器内部 (修改root密码可以进入容器内部进行修改

    2024年02月07日
    浏览(62)
  • docker安装下载tomcat一站式搞定并设置挂载卷

    阿丹:        之前在使用nginx部署搭建vue项目的时候没有出docker配置nginx的配置文档(因为之前使用的是腾讯云现成的nginx服务器),今天配置安装一下tomcat和nginx在docker里面的安装。 操作解读:        我们要完成的操作思路为:         1、完成拉取镜像         2、完成

    2024年02月10日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包