一、概述
- windows环境下使用Docker安装mysql 8.0
- 设置字符集为utf8
- 开放第三方工具登录端口(如:Navicat)
- 以及开发过程中涉及的知识点
二、步骤
-
拉取mysql镜像
docker pull mysql
-
查看所有镜像
docker images
-
创建mysql容器(docker run 参数详往下翻)
docker run -d -i --name mysql -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 mysql
-
进入mysql容器中
docker exec -it mysql bash
-
连接mysql (这里的登录密码是步骤3设置的密码password)
mysql -u root -p
-
查看字符集
show variables like'character%';
-
设置字符集(退出mysql [exit])
cd /etc/mysql vim my.cnf 报错bash: vim: command not found请执行以下命令安装vim apt-get update apt-get install -y vim
-
在my.cnf文件中添加下面代码
[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
-
保存文件,重启msql
:wq 保存文件 exit 退出容器 docker restart mysql 重启mysql(如果重启有问题往下翻)
-
查看字符集
docker exec -it mysql bash重新进入容器 mysql -uroot -p 重新链接数据库 show variables like'character%'; 查看字符集
三、涉及知识点
-
docker run 参数详解
docker run -d -i --name mysql -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 mysql -i:表示运行容器 -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。 --name :为创建的容器命名。 -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。 -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射 创建守护式容器 -p 3307:3306 第一个是映射出去的端口号 第二个是mysql自己的端口号 -e 代表初始化一个mysql用户 password = 填密码
-
安装vim
apt-get update apt-get install -y vim
-
查看错误日志
docker logs mysql
-
重启有问题,很大一部分原因mysql配置文件写错了
mysql容器没有启动无法直接修改my.cnf文件,可以使用方法如下 docker cp mysql:/etc/mysql/my.cnf d:/my.cnf 将mysql容器里面的my.cnf复制到D盘中进行修改 修改完成后执行 docker cp d:/my.cnf mysql:/etc/mysql/my.cnf 重新启动 docker start mysql
-
使用第三方工具Navicat登录
mysql -uroot -p grant all on *.* to 'root'@'%' ; //允许第三方工具登录 alter user 'root'@'%' identified with mysql_native_password by 'password'; 第三方工具不支持,Mysql8新增加的加密方式caching_sha2_password flush privileges;