官方homestead提供的mysql默认是5.7版本 那么如果我们需要其他版本的mysql我们可以在此基础之上新建mysql容器进行开发

简介

homestead作为PHP开发的可共享的集成虚拟环境 官方默认提供的mysql5.7版本 PHP的版本包含了5.6 7.0 7.1 7.2还有一些诸如redis memcache
这样的缓存数据库 其实这足以应对大部分的开发环境要求 对于mysql有时我们需要更新或者更低版本的数据库时 但是又不想摒弃现有的版本 那么我们完全可以借助docker建立对应的mysql容器

安装

我们这里以安装mysql5.6为例

对于现有的homesteadUbuntu的环境 我们需要先下载docker 先更新下源

$ sudo apt-get update

下载对应的docker

$ sudo apt-get install docker.io

下载完成之后启动服务

$ sudo service docker start

由于种种原因 对于官方库拉取image我们需要镜像加速 更改/etc/docker/daemon.json来配置(没有则新建)

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

接下来就是验证docker 以经典的hello world为例

如果出现这样的界面即为成功

因为已经拉取这个image 我们可以查看一下现有的image 对于docker的基础知识可以查看阮一峰的博客

接下来就是拉取mysql5.6的官方library

拉取完成之后再次查看image列表

接下来新建/docker/mysql5.6目录以配置一些mysql下面会用到的映射目录
拉取完成之后再次查看image列表

接下里在/docker/mysql5.6目录下启动mysql容器

$ sudo docker run -p 33061:3306 --name mysql1 -v $PWD/conf:/etc/mysql -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

这里也是在启动的时候为数据库设置了密码为123456

-p 指明mysql容器的3306端口映射到本地的33061端口

--name 指明启动后的container的别名 这样我们可以很方便的操作

-v 表明本地和容器的目录映射

启动mysql容器 这里我们可以通过别名启动

$ sudo docker start mysql1

进入mysqlbash即终端

$ docker exec -it mysql1 env LANG=C.UTF-8 bash

其中 env LANG=C.UTF-8 bash 让docker命令行支持中文

复制配置文件

$ cp /usr/my.cnf /etc/mysql/my.cnf

由于之前我们在/docker/mysql5.6新建了三个目录并进行了映射 如需要修改编码 这时退出容器bash可在本地修改即可

$ vim conf/my.cnf

主要是在my.cnf添加了字符编码 修改完保存即可

$ [client] default-character-set=utf8 
[mysql] default-character-set=utf8 
[mysqld] character-set-server=utf8

再次进入mysqlbash 这次先登录mysql

$ mysql -u root -p

密码就是启动容易时设定的123456 进入成功之后修改下时远程客户端可以连接这个mysql

$ grant all privileges on rise.* to root@'%' identified by '123456';
$ flush privileges;

即远程客户端可以使用root作为用户名 密码使用123456进行登录 至此我们的mysql容器安装完毕

我们知道本地连接homesteadmysql是通过33060端口进行连接 那么如果想连接homestead中的mysql容器那么可以再次进行端口映射

具体操作就是修改Homestead.yaml 增加端口从本地到homestead即可

ports:
    - send: 33062
      to: 33061

这样本地 可以使用用户名为root 密码为123456 端口这时改为33062即可连接homesteadmysql容器

相关链接