安装Docker
下载mysql镜像
官网镜像 docker pull mysql:5.7, 这个速度很慢 ,如果想用官方镜像
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
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外网登录 (博文更新:2020年08自测 默认开启外网访问 不需要再配置)
这时使用连接工具 如果提示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服务