Docker搭建Mysql教程 与踩坑问题解决 - 学习二

安装Docker

Docker入门安装 - 学习一

下载mysql镜像

官网镜像 docker pull mysql:5.6, 这个速度很慢 ,如果想用官方镜像

Docker镜像加速器配置教程


使用网易云国内镜像,下载速度快

docker pull 如不指定url默认从官网安装

$docker pull hub.c.163.com/library/mysql:5.7


启动容器

# 创建logs文件夹
mkdir logs

# 创建data文件夹
mkdir data
mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf

docker run -p 3306:3306 --name mymysql  -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=a123456 -d mysql:5.7

--name 给容器命名为mymysql

-v $PWD/conf:/etc/mysql/:将主机当前目录下的 conf/挂载到容器的 /etc/mysql/。

-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。

-p 3306:3306:将容器(冒号右边)的 3306 端口映射到主机(冒号左边)的 3306 端口。

-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。

-e MYSQL_ROOT_PASSWORD=a123456:初始化 root 用户的密码。

-d 使容器在后台启动

mysql:5.7 下载镜像名称与版本, 也可以写mysql镜像ID ,imageID。

查看容器启动情况

$docker ps  

进入容器配置mysql外网登录

这时使用连接工具 如果提示ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server。
说明没有打开远程访问.

就需要进入mysql的容器中进行设置了。

docker exec -it mymysql bash

docker exec 进入容器

-t 让docker分配一个伪终端,并绑定到容器的标准输入上;

-i 让容器的标准输入保持打开;

mymysql 是容器的名字。

登陆mysql:
mysql -u root -p

开启远程连接

use mysql;
grant all privileges on *.* to root@"%" identified by "password" with grant option;
flush privileges; 

root 用户名
% 所有ip都可以访问
password 是密码

执行完毕后,再通过工具去连接,就可以连上了。

Linux打开mysql 3306端口

如提示连接失败, 则查看系统防火墙是否打开3306端口

ubuntu使用如下命令启动ufw:
$ sudo ufw default deny
$ sudo ufw enable

打开3306端口
$ sudo ufw allow 3306

查看
$ sudo ufw status

首次连接很慢的问题解决

删除域名解析
当新的客户连接mysqld时,mysqld创建一个新的线程来处理请求。该线程先检查是否主机名在主机名缓存中。如果不在,线程试图解析主机名。

进入容器

docker exec -it mymysql bash

安装vim

敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,
可是当你敲apt-get install vim命令时,提示:

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim

1)这时候需要敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
2)等更新完毕以后再敲命令:apt-get install vim命令即可。

如果是:bash:ping: command not found

apt-get install iputils-ping

修改配置

 vim /etc/mysql/my.cnf

插入两行

[mysqld]
skip-name-resolve

退出重启mysql服务

你可能感兴趣的:(Docker搭建Mysql教程 与踩坑问题解决 - 学习二)