docker中安装MySQL
docker的官网镜像仓库(可以理解maven的仓库):https://hub.docker.com/
需要啥就搜啥
<img src="Linux安装服务图文教程/
17.1、安装MySQL8.0
第一步、从官网下载8.0的镜像
docker pull mysql:8.0
第二步、查看docker的所有镜像
docker images;
第三步、安装镜像,也可以理解启动容器,
- 当然了,学了Java,我是这样去理解的。一个镜像可以实例化多个实例(容器)
- 把镜像理解为类,当我new对象时,就会产生一个实例,如A a = new A();其中A为镜像,则a为容器(实例)
sudo 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 \
-v /mydata/mysql/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0
sudo docker run -p 3306:3306 --name mysql \ —>配置端口映射,把docker中的MySQL端口3306,映射到Linux的端口3306,
-v /mydata/mysql/log:/var/log/mysql \ —> 新建文件夹/mydata/mysql/,对应映射的docker中的MySQL /var/log/mysql \
…
-e MYSQL_ROOT_PASSWORD=root \ —> 设置用户名和密码,
-d mysql:8.0 ---->docker的镜像的版本
第四步、查看docker正在运行的容器
docker ps 或者 docker ps -a
第五步、使用navicate连接
很多用户在使用Navicat Premium 12连接MySQL数据库时会出现Authentication plugin ‘caching_sha2_password’ cannot be loaded的错误。
出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password.
安装MySQL8.0 会发现以下问题:当我们使用navicate来连接Linux的docker里面的MySQL时,会出现连接不上。
- 解决:
解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password.
docker exec -it mysql /bin/bash进入mysql容器.
再接着输入mysql -u root -p命令,然后输入自己的密码,最后输入以下命令
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; #修改root用户密码
FLUSH PRIVILEGES; #刷新权限
17.2、安装MySQL5.7
注意:
我是在已经安装MySQL的8.0前提下,继续安装mysql5.7,你们第一次安装,直接安装8.0或者5.7。作者是为了演示8.0与5.7的区别。
第一步,停止mysql8.0(第一次安装5.7的可忽略)
// 停止全部
docker stop $(docker ps -a -q)
// 停止一个容器
docker stop 容器进程Id/容器的名字
docker stop mysql
第二步,去官网下载5.7的版本
docker pull mysql:5.7
第三步,启动容器,配置映射信息
sudo docker run -p 3306:3306 --name mysql_5.7 \
-v /mydata_5.7/mysql/log:/var/log/mysql \
-v /mydata_5.7/mysql/data:/var/lib/mysql \
-v /mydata_5.7/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
第四步,navicate访问即可
17.3、修改MySQL的编码格式
修改外部挂载的 Mysql 映射文件,同时docker内部的 MySql 也会生效。 主要修改MySql的字符编码。
第一步、进入挂载的mysql配置目录
cd /mydata/mysql/conf
第二步、进入之后 没有任何文件,我们可以编辑创建
vi 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
skip-name-resolve
按: esc
:wq 保存退出
- 可以使用 cat my.cnf 查看
第三步、docker重启mysql使配置生效,
docker restart mysql
第四步、进入docker 的 内部的MySql中查看
docker exec -it mysql /bin/bash
cd /etc/mysql
cat my.cnf
第五步、 退出 docker 内部mysql
exit;