前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker 创建mysql镜像,并成功进行远程连接

docker 创建mysql镜像,并成功进行远程连接

作者头像
hbbliyong
发布2018-12-19 16:49:35
2.8K0
发布2018-12-19 16:49:35
举报
文章被收录于专栏:hbbliyonghbbliyong

1.安装

1.1 拉取镜像

代码语言:javascript
复制
docker pull mysql

拉取成功可以验证一下

代码语言:javascript
复制
docker images

1.2 创建并启动一个mysql容器

代码语言:javascript
复制
docker run --name ly-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
  • –name:给新创建的容器命名,此处命名为ly-mysql
  • -e:配置信息,此处配置mysql的root用户的登陆密码
  • -p:端口映射,此处映射主机3306端口到容器pwc-mysql的3306端口
  • -d:成功启动容器后输出容器的完整ID.
  • 最后一个mysql指的是mysql镜像名字

到这里我们查看容器运行状态:

$ sudo docker ps

可以看到容器的简写ID,容器的源镜像,创建时间,状态,端口映射信息,容器名字等。

1.3 连接测试

使用navicat远程连接,这里碰到几个问题

1.3.1 mysql连接IP问题

首先这个IP肯定不是localhost,然后以为是mysql容器的IP

1.3.1.1 查看mysql容器的ip
代码语言:javascript
复制
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-ID> 

结果是:172.17.0.2 但是还是连接不上

1.3.1.2 获取docker主机 IP
代码语言:javascript
复制
docker-machine ip

192.168.99.100

这个可以连接

结论:

当使用windows和macOS时,不应该使用localhost而应该使用docker-machine ip

1.3.2 连接mysql 8提示2059 - authentication plugin 'caching_sha2_password...

原因:由于myslq8不支持动态修改密码验证方式 解决方案:

  1. 进入mysql容器
代码语言:javascript
复制
docker exec -it ly-mysql bash
  1. 连接mysql
代码语言:javascript
复制
mysql -uroot -p

3.修改配置

代码语言:javascript
复制
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password';
FLUSH PRIVILEGES;

1.4 其他

1.4.1 记录几个命令
1.4.1.1 退出容器
  1. 如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器
  2. 如果使用exit退出,那么在退出之后会关闭容器,可以使用下面的流程进行恢复
  • 使用docker restart命令重启容器
  • 使用docker attach命令进入容器 1.4.1.2 修改MySQL配置文件有两种方法:
  • 一是进入容器,修改容器里的MySQL的配置文件,然后重新启动容器,例如:
代码语言:javascript
复制
$ sudo docker exec -it ly-mysql /usr/bin/bash

然后可以进入容器的命令行模式,接着修改 /etc/mysql/my.cnf 文件即可

  • 二是挂载主机的mysql配置文件,官方文档如下: The MySQL startup configuration is specified in the file /etc/mysql/my.cnf, and that file in turn includes any files found in the /etc/mysql/conf.d directory that end with .cnf. Settings in files in this directory will augment and/or override settings in /etc/mysql/my.cnf. If you want to use a customized MySQL configuration, you can create your alternative configuration file in a directory on the host machine and then mount that directory location as /etc/mysql/conf.d inside the mysql container.

If /my/custom/config-file.cnf is the path and name of your custom configuration file, you can start your mysql container like this (note that only the directory path of the custom config file is used in this command):

代码语言:javascript
复制
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

This will start a new container some-mysql where the MySQL instance uses the combined startup settings from /etc/mysql/my.cnf and /etc/mysql/conf.d/config-file.cnf, with settings from the latter taking precedence.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.安装
    • 1.1 拉取镜像
      • 1.2 创建并启动一个mysql容器
        • 1.3 连接测试
          • 1.3.1 mysql连接IP问题
          • 1.3.2 连接mysql 8提示2059 - authentication plugin 'caching_sha2_password...
        • 1.4 其他
          • 1.4.1 记录几个命令
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档