​​CentOS 7.9 安装Docker​​

拉取mysql 镜像

搜寻仓库里面有那些镜像

docker search mysql

Docker安装Mysql8_docker


我们拉取mysql:latest的镜像

docker pull mysql:latest

Docker安装Mysql8_docker_02


查看镜像

Docker安装Mysql8_配置文件_03


但是我们不知道mysql的具体版本号,我们使用docker inspect 命令来获取容器/镜像的元数据。

然后将这些数据输入到grep 命令来查找version的字符串

-i 或 --ignore-case : 忽略字符大小写的差别

docker image inspect mysql:latest | grep -i version

可以看到mysql 版本号为:8.0.27

Docker安装Mysql8_mysql_04

在服务器中,创建存放数据,配置文件的文件夹,我这里放在/home/xt(自己的用户名)下面

mkdir -p /home/xt/mysql/data /home/xt/mysql/conf

将文件的所有权交给root 用户 ​​Linux chown 命令​

chown root /home/xt/mysql

设置文件夹的用户权限 ​​Linux chmod命令​

chmod -R 755 /home/xt/mysql

mysql配置文件

在Windows本地编辑一个my.cnf 配置文件,写入内容如下,
然后移动到服务器的/home/xt/mysql/conf文件夹下

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
default_authentication_plugin=mysql_native_password

# Custom config should go here
!includedir /etc/mysql/conf.d/


[client]
#socket = /usr/mysql/mysqld.sock
default-character-set = utf8mb4

[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_bin

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

通过xftp软件将my.cnf 配置文件移动到如图路径位置(这个文件夹是我自己创的,你们移动到自己创的文件夹下面)

Docker安装Mysql8_docker_05

创建启动容器

docker run -p 3306:3306 --name mysql -v /home/xt/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /home/xt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxx -d mysql:latest

命令说明:

  • -p 3306:3306 : 将容器的 3306 端口映射到主机的 3306 端口
  • –name mysql : 启动后容器名为 mysql
  • -v /home/xt/mysql/conf/my.cnf:/etc/mysql/my.cnf : 将主机的/home/xt/mysql/conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf (配置文件)
  • -v /home/xt/mysql/data:/var/lib/mysql : 将主机的/home/xt/mysql/data挂载到容器的 /var/lib/mysql (data目录为mysql配置的数据文件存放路径,建议挂载,是存储数据的,容器down掉,还能再次挂载数据。)
  • -e MYSQL_ROOT_PASSWORD=xxxxx  :   初始化 root 用户的密码
  • -d 后台运行容器

进入容器内部

docker exec -it mysql /bin/bash

连接到mysql,输入上面设置的密码

mysql -u root -p

Docker安装Mysql8_mysql_06

显示所有数据库

show database;

Docker安装Mysql8_docker_07


使用其中的mysql数据库

use mysql;

展示user 表的host,user和plugin

select host,user,plugin from user;

如果root用户的插件不为mysql_native_password,则需要修改为mysql_native_password,

虽然最新版MySql换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。但是一些客户端工具比如Navicat 中还找不到新的身份验证插件(caching_sha2_password),因此,我们需要将mysql用户使用的 登录密码加密规则 还原成 mysql_native_password,方便客户端工具连接使用。

update user set plugin='mysql_native_password' where user='root';

Docker安装Mysql8_docker_08

修改访问密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

最后刷新权限
​Mysql的权限问题以及flush privileges​​flush privileges的使用场景
当我们直接用DML语句修改系统权限表(mysql.user、mysql.db、mysql.tables_priv、mysql.columns_priv)时,内存中的权限数组是不会同步更新的,此时我们就需要flush privileges来更新内存权限数据了。

flush privileges;

Docker安装Mysql8_mysql_09

这样,就可以通过Navicat等客户端连接我服务器的mysql 了

Docker安装Mysql8_mysql_10

如果有什么问题请到评论区留言,如果我看到了,一定会第一时间回复大家。