linux docker 部署mysql8以上版本时弹出Access denied for user root @ localhost (using password: YES)的解决方案

这篇具有很好参考价值的文章主要介绍了linux docker 部署mysql8以上版本时弹出Access denied for user root @ localhost (using password: YES)的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

该结论使用于java启动报错 也试用于windows连接报错 不止linux docker

一、直接说结论,再来说原因和我的bug寻找过程:

        1.配置文件的mysql或者命令参数的密码需要带英文单引号

        2.不可以挂载之前别的容器使用过的mysql数据目录或者你的执行命令里改过密码,比如之前是run mysql password 123  你改成了run mysql password 456

二、排查和分析:

环境:centons7

docker部署时命令如下:

#原部署文件代码
mysql:
    image: mysql:latest
    container_name: mysql_app
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      # root 密码
      MYSQL_ROOT_PASSWORD: 011234
      # 初始化数据库(后续的初始化sql会在这个库执行)
      MYSQL_DATABASE: appdatabase
    ports:
      - "3307:3306"
    volumes:
      - "/app/mysql/data:/var/lib/mysql"
      - "/app/mysql/init:/docker-entrypoint-initdb.d"
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci

通过docker将服务部署完后,navicat连接报错,密码错误,于是我尝试进入mysql容器登录 发现也报错。

linux docker 部署mysql8以上版本时弹出Access denied for user root @ localhost (using password: YES)的解决方案,学习过程中错误异常BUG的排查,docker,容器,运维,linux,mysql,服务器,bug

linux docker 部署mysql8以上版本时弹出Access denied for user root @ localhost (using password: YES)的解决方案,学习过程中错误异常BUG的排查,docker,容器,运维,linux,mysql,服务器,bug

于是我便查找网上的方法 清一色全是改密码。没卵用,你每次启动容器都去改一次密码???还麻烦的要死 况且在容器内你怎么改配置文件改密码。。。

于是我开始尝试把docker compose用gpt改成docker run  一条命令一条命令删除执行删除执行

linux docker 部署mysql8以上版本时弹出Access denied for user root @ localhost (using password: YES)的解决方案,学习过程中错误异常BUG的排查,docker,容器,运维,linux,mysql,服务器,bug

最终发现gpt的密码多了单引号,于是我在命令里加了单引号 成功连接不报错

linux docker 部署mysql8以上版本时弹出Access denied for user root @ localhost (using password: YES)的解决方案,学习过程中错误异常BUG的排查,docker,容器,运维,linux,mysql,服务器,bug

然后我以为解决了 我又把密码改成了‘123’,发现又报错密码错误了

这时候我开始分别一条条删除以下的附加命令分别run执行,最后定位到data目录这句删了以后就连接不报错了 


    ports:
      - "3307:3306"
    volumes:

      - "/app/mysql/data:/var/lib/mysql"--------------关键报错代码
      - "/app/mysql/init:/docker-entrypoint-initdb.d"
    privileged: true
    restart: always

于是我得出结论:

mysql8登录第一次遇到MYSQL_ROOT_PASSWORD时会自动把该密码尽兴登录,生成一个秘钥放在mysql的数据文件里面,命令里带的MYSQL_ROOT_PASSWORD密码是个参数,除了第一次运行mysql带上会设置密码生成秘钥,其他次启动而不是设置mysql的密码,而是作为参数去验证这个最初的秘钥是否核对正确,于是我进入挂载的data目录,发现我的猜想是对的。至此结束。

linux docker 部署mysql8以上版本时弹出Access denied for user root @ localhost (using password: YES)的解决方案,学习过程中错误异常BUG的排查,docker,容器,运维,linux,mysql,服务器,bug文章来源地址https://www.toymoban.com/news/detail-826040.html

到了这里,关于linux docker 部署mysql8以上版本时弹出Access denied for user root @ localhost (using password: YES)的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Docker Compose部署Mysql8

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

    2024年02月05日
    浏览(35)
  • 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日
    浏览(29)
  • Linux安装下载mysql8.0版本实战详细教程

    1.进入 /usr/local下,根据需要的版本下载mysql:wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.30-el7-x86_64.tar.gz,不通版本修改命令里的版本号 没有wget命令的可以安装此命令 sudo yum -y install wget 也可以下载完自己上传到linux里面 2.解压下载的包,tar zxvf mysql-8.0.30-el7-x86_64.tar.gz,解压完

    2024年02月01日
    浏览(65)
  • win10 Mysql8.0以上重置初始密码

    首先,确保自己已经关闭了Mysql的服务 问题:关闭时报错  原因是:因为net start +服务名,启动的是win下注册的服务。此时,系统中并没有注册mysql到服务中。即当前路径下没有mysql服务。 1. 来到MySQL的安装路径下bin C:Program FilesMySQLMySQL Server 8.0bin 2. 在命令行中输入mysqld -

    2024年02月06日
    浏览(51)
  • Docker下部署mysql8.0,超详细零基础教程!

    操作前确认当前linux用户是管理员,并且安装有Docker。 启动docker 拉取镜像 查看镜像是否拉取成功 创建mysql容器 #注意前一定加空格 为什么上边要手动创建自己的路径?我们先来看如果不指定一个自己的路径,那么mysql自动生成的路径是啥样的。 查看未指定数据存储路径的

    2024年03月22日
    浏览(34)
  • Linux系统安装MySQL8.0版本详细教程【亲测有效】

    首先官网下载安装包:https://downloads.mysql.com/archives/community/ 一、上传到安装服务器 二、解压 三、移动位置并重新命名 四、创建mysql用户组和用户并修改权限 五、创建目录并赋予权限 六、配置my.cnf文件 配置内容如下: 七、初始化数据库 进入bin目录下 初始化 查看密码 生成的

    2024年02月03日
    浏览(35)
  • Linux 下安装配置部署MySql8.0

    MySQL安装包:在官网下载需要的版本,这里我用的版本是 MySQL 8.0.34 https://dev.mysql.com/downloads/mysql/ 本次linux机器使用的是阿里云ECS实例 1. 将安装包上传至服务器 解压到当前文件夹 2. 移动解压后的目录到目标安装目录 3. 文件名太长,改成 mysql-8.0.34 4. 增加用户组 mysql,在用户组

    2024年01月16日
    浏览(33)
  • 【MySQL8入门到精通】基础篇- Linux系统静默安装MySQL,跨版本升级

    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。

    2023年04月09日
    浏览(37)
  • linux系统mysql8单机多实例+主从复制部署

    参考我的另一篇博文,tag.gz解压完并且配置完环境变量即可,暂时不要初始化 linux单机部署mysql(离线环境解压即可)-CSDN博客 可能因为版本不同,我的这个配置可能不是通用的, 我安装的是mysql8.0.34版本。如果我的配置不适用于其他版本,请输入命令mysqld_multi --example, 参考官方

    2024年01月25日
    浏览(35)
  • Docker的使用教程、学习笔记,附实战:部署chatgpt网页版ui,部署mysql8数据库

    作者:ChenZhen 博客地址:https://www.chenzhen.space/ 版权:来自b站视频 【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 因为黑马的课件ppt做的实在是太好了,基本就是原样copy过来整理一下。 如果对你有帮助,请给一个小小的

    2024年02月04日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包