使用docker安装mysql
每次使用#sudo 太麻烦,使用su root 命令切换到root账号,密码为:vagrant
1、查看docker hub上mysql 镜像,这个结果是按照一定的星级评价规则排序的
docker search mysql
2.拉取官方的镜像,标签为5.7
docker pull mysql:5.7
等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mysql,标签为5.7的镜像。
docker images
3.配置mysql镜像实例并启动
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明:
docker run : 启动docker容器
-p 3306:3306 将mysql容器的3306端口映射到linux主机的3306端口,访问linux的3306就能访问到mysql的3306
-name mysql : 给当前容器取name
\ : 换行
-v /mydata/mysql/log:/var/log/mysql \ : 将日志文 件挂载到主机
-v /mydata/mysql/data:/var/lib/mysql \ :将mysql数据挂载到主机
-v /mydata/mysql/conf:/etc/mysql \ :将配置文件挂载到主机
-e MYSQL_ROOT_PASSWORD=root \ :初始化root 用户的密码
如果启动报错提示:docker: Error response from daemon: Conflict. The container name "/mysql" is already in use by container "09e74756347ca4b3e604eb2b9c26b4f32d391d71e4fb2d64884c911f1e397414". You have to remove (or rename) that container to be able to reuse that name.
出现上述的错误,是因为docker容器里面已经存在,如果不需要,则删除。docker rm fb087642b497(该containerID)
如果想要再次使用,使用
docker restart 镜像名
则可以重启该container容器。
使用 docker ps 查看docker中正在运行的容器
docker ps
使用navicate测试连接当前 mysql服务
4、进入mysql容器
根据上面查出来的mysql容器ID 或者NAMES 并通过以下命令进入mysql容器交互模式
docker exec -it mysql /bin/bash
进入mysql容器内部后,使用 ls 命令查看当前文件目录
可以发现,当前目录就是一个完整的linux目录结构,mysql被安装到了当前的linux容器中,可以理解为mysql容器就是一个小小的单独的完整的linux
5、进入mysql
mysql -uroot -p
6.配置数据库编码
MySQL的默认编码是Latin1,不支持中文,所以需要手动修改默认编码
修改配置文件,配置文件在etc/mysql/mysql.conf.d/mysql.cnf这个文件里头
由于上面我们已经通过命令“-v /mydata/mysql/conf:/etc/mysql \”将mysql的配置文件挂载到linux的 /mydata/mysql/conf 下,所以我们直接进入l这个目录进行修改mysql
先cd到 /mydata/mysql/conf
6.1.在虚拟机/mydata/mysql/conf路径下创建一个文件命名为:my.cnf
vi /mydata/mysql/conf/my.cnf
6.2 按i键进入编辑模式,粘贴以下内容:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake
然后按ESC,左下角就可以进行输入 :wq保存并退出即可
:w
保存但不退出
:wq
保存并退出
:q
退出
:q!
强制退出,不保存
:e!
放弃所有修改,从上次保存文件开始再编辑命令历史
6.3 然后输入以下命令重启mysql即可。
docker restart mysql
6.4 验证mysql容器内部是否已存在配置文件
使用 docker exec -it 交互模式 进入mysql 的/bin/bash 操作台
docker exec -it mysql /bin/bash
进入 mysql 内部的/etc/mysql 目录下
我们可以发现 该目录下也以存在了一个相同的的my.cnf 配置文件
打开my.cnf文件看一下,此配置文件中的内容跟我们在linux下挂载的配置文件内容是相同的
到此,使用docker安装mysql及其配置就完成了。
ps:设置docker中mysql开机自启动:
docker update mysql --restart=always
ps:设置docker中关闭mysql开机自启动:
docker update mysql --restart=no