docker中安装mysql8

这篇具有很好参考价值的文章主要介绍了docker中安装mysql8。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

阿里云ecs服务器,centos7.9系统,docker中安装mysql8

1. 拉取镜像

docker pull mysql # 拉取镜像
docker images # 查看镜像

docker mysql 8,docker,docker

2. 基于宿主机实现mysql8数据目录、配置文件、初始化脚本的挂载

2.1 创建3个文件夹,一会创建容器需要用(用于挂载本地文件和目录)
mkdir -p /islirj/mydata/mymysql8/conf # 存放本地配置文件mysql8.cnf
mkdir -p /islirj/mydata/mymysql8/init # 放置数据库sql文件,初始化时被执行一次
mkdir -p /islirj/mydata/mymysql8/data
2.2 配置mysql.cnf的内容,并放入conf文件夹中
[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
2.3 将sql文件放入init文件夹中

docker mysql 8,docker,docker

  1. sql文件只在容器创建时执行一次
  2. sql文件可以有多个

3. 创建mysql容器

# 1.删除原来的MySQL容器
docker rm -f mysql # -f 强制删除

# 2.创建并运行新mysql容器,挂载本地目录
docker run -d \ # 创建并运行一个容器,-d是让容器在后台运行
  --name mymysql8 \ # 给容器起个名字,必须唯一
  -p 3306:3306 \ # 设置端口映射
  -e TZ=Asia/Shanghai \ # 设置环境变量
  -e MYSQL_ROOT_PASSWORD=yourpassword \ # 设置密码
  -v /islirj/mydata/mymysql8/data:/var/lib/mysql \ # 挂载
  -v /islirj/mydata/mymysql8/conf:/etc/mysql/conf.d \
  -v /islirj/mydata/mymysql8/init:/docker-entrypoint-initdb.d \
  --restart=always \ # 当重启Docker时会自动启动该容器
  -dit mysql:lates \ # 后台运行并可控制台接入;指定使用的镜像(latest代表最新版本;如果使用5.7则写为mysql:5.7)
3.1 测试是否成功
# 3.查看data目录,会发现里面有大量数据库数据,说明数据库完成了初始化
ls -l data

# 4.查看MySQL容器内数据
# 4.1.进入MySQL
docker exec -it mymysql8 mysql -uroot -pyourpassword
# 4.2.查看编码表
show variables like "%char%";
# 4.3.结果,发现编码是utf8mb4没有问题
# +--------------------------+--------------------------------+
# | Variable_name            | Value                          |
# +--------------------------+--------------------------------+
# | character_set_client     | utf8mb4                        |
# | character_set_connection | utf8mb4                        |
# | character_set_database   | utf8mb4                        |
# | character_set_filesystem | binary                         |
# | character_set_results    | utf8mb4                        |
# | character_set_server     | utf8mb4                        |
# | character_set_system     | utf8mb3                        |
# | character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
# +--------------------------+--------------------------------+

# 5.查看数据
# 5.1.查看数据库
show databases;
# 结果如下
# +--------------------+
# | Database           |
# +--------------------+
# | information_schema |
# | mysql              |
# | performance_schema |
# | pig                |
# | pig_codegen        |
# | pig_config         |
# | pig_job            |
# | sys                |
# +--------------------+
3.2 出现错误:docker 启动MySQL一直处于restarting状态

解决方案:查看日志
命令:docker logs -f <容器名>

4. 远程连接mysql

4.1 ecs服务器设置安全组规则
  1. 阿里云的服务器默认端口是不对外开放的,如果想要供外部访问,需要在安全组中手动添加规则,开放端口
  2. 首先去百度,搜索ip,查看自己ip地址,我的ip是182.204.x.x,所以在第4步配置的时候写成182.204.0.0/16; 如果写成0.0.0.0/0代表所有ip都可以访问,有点危险。

docker mysql 8,docker,docker

  1. 做完这一步之后,尝试实用工具连接
  2. 如果连接报错,错误码为2048:参考4.2
  3. 如果是其它问题,参考4.3

docker mysql 8,docker,docker

4.2 报错
  1. 错误号码2058 Plugin caching_sha2_password could not be loaded:xxxxxxx
  2. 原因:出现这个问题,是因为 MySQL 从 8.0 版本开始,新增了caching_sha2_password授权插件,并且新建用户时默认使用该插件进行加密,而你的 sql工具 无法识别该加密方式加密的密码。
  3. 解决方案
4.3 设置数据库用户访问权限

将云服务器的3306端口开放之后还是不可以在本地进行连接,因为用户的访问权限默认是localhost,并不能从外部进行访问,需要手动赋权。

  1. 使用如下命令查看数据库中各个用户的访问权限:
select user,host from mysql.user;

# 结果
# +------------------+-----------+
# | user             | host      |
# +------------------+-----------+
# | root             | %         |
# | mysql.infoschema | localhost |
# | mysql.session    | localhost |
# | mysql.sys        | localhost |
# | root             | localhost |
# +------------------+-----------+
  1. 用如下命令将所需要开放的用户的访问权限改为任意:
# mysql5.7版本命令(密码一定要复杂)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '远程连接的密码' WITH GRANT OPTION;

# mysql8.0版本使用上述语句会报错:
# You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by  'password' with grant option'
# 原因:原因分析 :高版本的MySQL把将创建账户和赋予权限分开了。
# 解决方法:分开执行。

# 1. 创建账户
create user 'root'@'%' identified by '远程连接密码';

# 2. 赋予权限
grant all privileges on *.* to 'root'@'%' with grant option;

# 3. 刷新
flush privileges;

参考链接文章来源地址https://www.toymoban.com/news/detail-854164.html

到了这里,关于docker中安装mysql8的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker安装Mysql8.0

    1.拉取镜像 当前安装mysql8.0,执行docker pull mysql:8.0 2.查看镜像 3.复制目录 这里由于8.0和5.6配置文件目录有所不同,可能会发生 通过docker logs命令查看,是由于缺少/etc/mysql/conf.d目录,启动失败.需要先查看目录结构,再做判断. 此处不绑定端口,只用于查看文件目录,和拷贝配置,

    2024年03月09日
    浏览(49)
  • Docker中安装MySQL 8

    上一期在Windows中安装好了Docker环境,这一期在Docker中完成 MySQL 8 安装和配置。 启动 Docker Desktop 后在cmd窗口中输入 docker -v 即可查看到安装的docker版本 Docker启动一个容器(应用)时,大致原理流程如下图:根据流程图理解以下容器(应用)安装的步骤! 1、拉取MySQL镜像 启动 Docke

    2024年02月15日
    浏览(29)
  • centos docker安装mysql8

    1、创建挂载文件夹 mkdir -p /mydata/mysql/log mkdir -p /mydata/mysql/data mkdir -p /mydata/mysql/conf 2、拉取镜像最新版本,如果写 mysql:8.0.26可以指定版本 docker pull mysql 3、启动命令 docker run -p 3306:3306 --restart=always -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/my

    2024年02月07日
    浏览(56)
  • 【Docker构建MySQL8.0镜像】

    拉取成功后就可以看到镜像了: 这里我们选择 MySQL 8.0.35 版本,因为在 8.0.33 及其之前的版本被扫出 多个漏洞 ,所以决定使用比较新版本的 8.0.35 。 最好在启动时自己准备好配置文件 3.1 启动脚本 注意:上述启动命令需要修改 密码 、 日志目录 、 配置文件目录 等内容后才能

    2024年01月18日
    浏览(57)
  • Docker Compose部署Mysql8

    MySQL是一个广泛使用的开源关系型数据库管理系统,它被用于许多Web应用程序的数据存储和管理。MySQL提供了高性能、可靠性和灵活性,让开发者能够轻松处理各种规模的数据处理需求。 下面是一些关于MySQL的重要特点和功能: 关系型数据库 : MySQL是一个基于关系模型的数据库

    2024年02月05日
    浏览(43)
  • 3.Docker 搭建 MySQL8.0

    重启后自动加载mysql

    2024年02月11日
    浏览(63)
  • Docker 安装 MySQL5.7 和 MySQL8

    拉下来镜像后 执行 docker images 此时我们已经有这个镜像了。 在根目录下创建 app , 在 app 目录下创建 mysql57 文件夹。 命令如下: 参数说明 : -d :将容器在后台运行(以分离模式运行)。 -p 3306:3306 :将宿主机的 3306 端口映射到容器的 3306 端口,这样可以通过宿主机的 3306

    2024年02月04日
    浏览(51)
  • 【Docker】Docker中安装MySQL数据库

    点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情) 虽然 docker 安装 mysql 不是一个很好的方案,但是为了个人使用方便,使用 docker 安装 mysql 还是没什么问题的。 且安装时把主机文件挂载到容器上,保证了 mysql 的持久化,对开

    2024年02月14日
    浏览(41)
  • docker 部署 mysql8.0 无法访问

    这是我的启动命令,发现没有我这里是没有指定端口的 这段命令的来源是docker 镜像仓库官网 使用 docker ps 查看 发现端口有没有什么不一样没 正常的都有 0.0.0.0:端口 我的这个没有 于是我把这个容器删除了 docker rm -f 容器Id ,重新创建了一个 docker run -p 3306:3306 --name mysql -e MYSQL_

    2024年02月15日
    浏览(39)
  • docker 安装mysql8 实现互为主从

    先按照这个目录结构创建。 mysql.conf 配置,mysql的基础可以在此添加 mysql-master下conf配置 mysql-slave下conf配置  注意我指定了数据库为test_db  注意:我使用的mysql用户为默认root,可以自行创建其他用户访问数据库。 在mysql文件夹下执行   如上图所示表示mysql创建成功。 获取主服

    2024年02月22日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包