一次docker登录mysql报错问题的实战记录

yizhihongxing

下面我将为你详细讲解一次docker登录mysql报错问题的实战记录的完整攻略。

问题描述

在使用 docker 运行 mysql 时,执行docker exec -it mysql bash进入mysql容器内后使用mysql -uroot -p命令登录 mysql 数据库时,报错如下:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解决方案

方案1:使用默认密码登录

在我本地运行 mysql 时,它使用了默认的密码,所以我可以使用mysql -uroot -p命令登录。但是,在使用docker运行mysql时,密码可能会在环境变量中明文传递或者被挂载在宿主机上。因此,需要从环境变量或者宿主机文件中查找密码再进行登录。

在本次问题中,因为我们使用了环境变量MYSQL_ROOT_PASSWORD指定了密码,所以我们只需要在运行 mysql 容器时使用echo $MYSQL_ROOT_PASSWORD命令查找密码,然后使用mysql -uroot -p<password>命令登录即可。

示例命令如下:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
docker exec -it mysql bash
mysql -uroot -p123456

方案2:修改 MySQL 用户权限

在mysql中,'root'@'localhost'用户的权限很有可能不够,特别是在使用docker运行mysql时。因此,可以通过修改'root'@'localhost'的用户权限来解决问题。

具体的做法是,在容器中执行以下命令:

mysql -uroot -p

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

这样就可以解决登录问题了。

示例命令如下:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
docker exec -it mysql bash
mysql -uroot -p123456

然后进入mysql命令行后执行以下命令:

-- 授予远程连接用户全部权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

-- 授予本机登录用户全部权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

-- 刷新权限
FLUSH PRIVILEGES;

总结

本文介绍了两种解决 docker 登录 mysql 报错问题的解决方案,分别是通过查找默认密码以及修改 MySQL 用户权限。希望本文对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一次docker登录mysql报错问题的实战记录 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Dbeaver连接MySQL数据库及错误Connection refusedconnect处理方法

    一、Dbeaver连接MySQL数据库攻略: Dbeaver是一款开源的通用数据库管理工具,支持多种数据库,包括MySQL。在使用Dbeaver连接MySQL数据库的过程中,需要遵循以下步骤: 安装Dbeaver并打开软件; 点击“数据库”选项卡中的“新建连接”; 在弹出的窗口中选择数据库类型为“MySQL”; 输入MySQL数据库的地址、端口、用户名和密码…

    MySQL 2023年5月18日
    00
  • MySQL事务还没提交,Canal就能读到消息了?

    【问题描述】 开发有天碰到一个很奇怪的问题,他的场景是这样子的:通过Canal来订阅MySQL的binlog, 当捕获到有数据变化时,回到数据库,反查该数据的明细,然后做进一步处理。有一次,他碰到一个诡异的现象: 1. Canal收到消息,有一条主键id=31019319的数据插入 2. 11:19:51.081, 应用程序去反查数据库,11:19:51.0…

    2023年4月8日
    00
  • IDEA配置连接MYSQL数据库遇到Failed这个问题解决

    下面我将为您详细讲解“IDEA配置连接MYSQL数据库遇到Failed这个问题解决”的完整攻略。 背景介绍 在使用 IntelliJ IDEA 开发 Java 项目的过程中,经常需要与 MySQL 数据库进行交互。但是在配置连接 MySQL 数据库时,有时会遇到 “Failed” 的问题,无法正常连接。 解决方案 针对这个问题,解决方法主要有以下几种: 1.…

    MySQL 2023年5月18日
    00
  • 如何安装MySQL Community Server 5.6.39

    下面我将为你详细讲解“如何安装MySQL Community Server 5.6.39”的完整攻略。步骤包括: 安装MySQL Community Server 5.6.39步骤 1. 下载安装包 首先,你需要到MySQL官网下载MySQL Community Server 5.6.39的安装包。下载地址为:http://dev.mysql.com/dow…

    MySQL 2023年5月18日
    00
  • SQLyog安装使用教程:SQLyog13连接MySQL8.0出现2058错误解决方法

    SQLyog是一款流行的图形化MySQL客户端,提供了方便的数据库管理界面。本文将详细讲解SQLyog的安装和使用方法,并介绍连接MySQL8.0时出现的2058错误的具体解决方法。 安装SQLyog 访问SQLyog官网(https://www.webyog.com/product/sqlyog)下载SQLyog软件安装包。 双击安装包进行安装,按照提示进…

    MySQL 2023年5月18日
    00
  • mysql中,now()函数和sysdate()函数有什么区别?

    问题描述:   今天在看mysql的时间函数,now()和sysdate(),记录下两者之间有什么不同. 实验过程: 1.执行以下的两个语句: mysql> select now(),sleep(2),now(); +———————+———-+———————+ | now() | sl…

    MySQL 2023年4月13日
    00
  • MySQL主从复制原理剖析与应用实践

    MySQL Replication(主从复制)是指数据变化可以从一个MySQL Server被复制到另一个或多个MySQL Server上,通过复制的功能,可以在单点服务的基础上扩充数据库的高可用性、可扩展性等。 vivo 互联网服务器团队- Shang Yongxing MySQL Replication(主从复制)是指数据变化可以从一个MySQL Ser…

    MySQL 2023年4月13日
    00
  • 分布式编译系统的搭建

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 作者:dan 文章来源:GreatSQL社区原创 由于MySQL 源码编译单机耗费的时间过于长,最近MySQL 变成8.0.27 以后编译时间明显更耗时了,并且办公室内有多余的空闲机器。 使用分布式编译,可以在不…

    MySQL 2023年4月27日
    00
合作推广
合作推广
分享本页
返回顶部