前言

linux已经安装好docker环境
安装docker环境教程:Linux的centos7安装docker


docker 安装mysql

1.docker hub 镜像仓库官网

仓库官网地址:https://hub.docker.com/search?q=mysql&type=image
在这里插入图片描述

mysql版本都是可以在这里找到,然后选择自己想要的版本下载

在这里插入图片描述

2.拉取镜像

在服务器执行命令:

docker pull mysql:8.0.22

下载之后查看自己下载好的镜像:

docker images

如图:
在这里插入图片描述

3.docker启动mysql容器

1)数据卷挂载

为了数据可以不再移除容器的时候丢失,把mysql容器里的目录挂载在服务器的目录上
如果不是root运行docker命令,要先创建目录

mkdir -p /usr/local/docker/mysql/data
mkdir -p /usr/local/docker/mysql/mysql-files
mkdir -p /usr/local/docker/mysql/cnf
mkdir -p /usr/local/docker/mysql/log

2)编写my.cnf文件(这一步看自己想要的数据库情况设置)

在目录/usr/local/docker/mysql/cnf里新建文件:my.cnf

#Apply this config only on the master.
[client]
port = 3306
default-character-set = utf8mb4

[mysql]
port = 3306
default-character-set = utf8mb4

[mysqld]
# bind-address = 0.0.0.0
# port = 3306

max_connections=10000

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 设置时区和字符集
# default-time-zone='+8:00'
character-set-client-handshake=FALSE
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'

gtid-mode=ON
enforce-gtid-consistency = ON

3)启动mysql容器,使用docker run

docker run  \
--restart=always \
--name mysql \
-v /usr/local/docker/mysql/cnf:/etc/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-v /usr/local/docker/mysql/log:/var/log \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.22
  • –restart=always #容器在docker启动的时候,也会跟着启动

  • –name mysql #给容器取名

  • -v /usr/local/docker/mysql/data:/var/lib/mysql #挂载目录,就是把容器的目录挂载到外面

  • -p 3306:3306 #端口映射

  • -e MYSQL_ROOT_PASSWORD=root #mysql初始密码

  • -d #后台运行

4)查看启动是否成功

docker ps -a

如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y2THRxD2-1607157202969)(C:\Users\libingwei\AppData\Roaming\Typora\typora-user-images\image-20201205155624868.png)]

4.进入容器命令:docker exec -it mysql bash

问题解决

(1)mysql 8.0远程登录不了

出现这个主要是权限不够,把权限放开就好了
使用命令:docker exec -it mysql bash进入mysql容器
1.使用命令进入mysql

mysql -uroot -p123456

2.查看权限信息

use mysql;
select host, user, authentication_string, plugin from user;

查看user表的root用户Host字段是localhost,说明root用户只能本地登录,现在把他改成远程登录
3.把root的权限更新

update user set host='%' where user='root';

4.刷新权限

FLUSH PRIVILEGES;

5.就可以登录了

6.还是登录不了,可能是密码问题:

##如果plugin 的加密方式为caching_sha2_password,表示需要更改
##更改root用户加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '123456';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
Logo

更多推荐