Docker安装Mysql8

CentOS 7.9 安装Docker

拉取mysql 镜像

搜寻仓库里面有那些镜像

docker search mysql

在这里插入图片描述
我们拉取mysql:latest的镜像

docker pull mysql:latest

在这里插入图片描述
查看镜像
在这里插入图片描述
但是我们不知道mysql的具体版本号,我们使用docker inspect 命令来获取容器/镜像的元数据。
然后将这些数据输入到grep 命令来查找version的字符串
-i 或 --ignore-case : 忽略字符大小写的差别

docker image inspect mysql:latest | grep -i version

可以看到mysql 版本号为:8.0.27
在这里插入图片描述

在服务器中,创建存放数据,配置文件的文件夹,我这里放在/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 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

在这里插入图片描述

显示所有数据库

show database;

在这里插入图片描述
使用其中的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';

在这里插入图片描述

修改访问密码

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;

在这里插入图片描述

这样,就可以通过Navicat等客户端连接我服务器的mysql 了
在这里插入图片描述

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值