简介
本文介绍如何使用docker安装mysql8。
查看mysql版本
https://hub.docker.com/_/mysql/tags
我选择8.0,点击右侧箭头处直接复制命令。
拉取镜像
拉取镜像的命令
docker pull mysql:8.0
查看是否拉取成功
docker images
如下便是拉取成功
创建文件夹(配置、数据等)
此处不是必须的,因为下边使用docker run运行容器时会自动根据-v参数创建没有的文件夹。
mkdir -p /work/docker/mysql/conf mkdir -p /work/docker/mysql/data mkdir -p /work/docker/mysql/log
创建配置文件
创建文件:/work/docker/mysql/conf/my.cnf
内容如下:
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] #服务端口号 默认3306 port=3306 datadir = /work/docker/mysql/data init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # 最大连接数 max_connections=200 # 连接失败的最大次数。防止有人从该主机试图攻击数据库系统 max_connect_errors=20 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB
启动容器
启动容器的命令
docker run -p 3306:3306 \ --name mysql8 \ --privileged=true \ -v /work/docker/mysql/log:/var/log/mysql \ -v /work/docker/mysql/data:/var/lib/mysql \ -v /work/docker/mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:8.0
- –privileged=true
- 设置MySQL 的root用户权限, 否则外部不能使用root用户登陆。
- -e MYSQL_ROOT_PASSWORD=123456
- 设置MySQL数据库root用户的密码
其他参数参考此文:Docker-安装Redis-方法/步骤 – 自学精灵
查看启动后的容器
docker ps
设置密码等
实际原来的123456仍然有效,只不过只能localhost机器能用(在MySQL服务器上的mysql命令直连时可以使用)Navicat不能用。
1.进入容器内部
docker exec -it mysql8 /bin/bash
2.连接mysql
mysql -u root -p
输入前边设置的密码:123456,然后回车。
3.修改访问主机以及密码
设置为所有主机可访问
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
Mysql8.0 默认采用 caching-sha2-password 加密,有可能旧的客户端不支持,可改为 mysql_native_password;
CREATE USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '222333';
4.刷新权限
FLUSH PRIVILEGES;
测试Navicat连接
密码为222333。连接成功。
请先
!