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

下面我将为你详细讲解一次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日

相关文章

  • MySQL表设计与优化

    影响MySQL查询性能的因素有很多,我们经常会对查询语句、索引字段做一些优化,而其实在表设计的阶段就可能产生一些问题。对于表设计,可以对表结构进行优化,也可以对表字段进行优化。以下通过一个具体的案例演示一些常用的表设计优化的方法。 一、业务需求 这里,就以学生-教师-课程业务作为示例。数据库需要存放学生、教师、课程相关信息。学生信息包括学号、姓名、性别、专业…

    MySQL 2023年4月17日
    00
  • 干掉一堆mysql数据库,仅需这样一个shell脚本(推荐)

    这样一个shell脚本是指一个名为mysql_dropper.sh的脚本,它可以批量删除MySQL数据库。下面是详细的攻略: 下载和安装必要的工具 首先需要安装mysql命令行客户端和expect工具。在Linux下,可以通过以下命令安装: sudo apt-get update sudo apt-get install mysql-client expec…

    MySQL 2023年5月18日
    00
  • Mysql错误1366 – Incorrect integer value解决方法

    关于“Mysql错误1366 – Incorrect integer value解决方法”的完整攻略,我将以下几个方面的内容进行详细讲解: 问题描述和原因分析 当我们在使用Mysql时,有时候会碰到“1366 – Incorrect integer value”的错误。这种错误通常发生在我们尝试将一个字符串类型的数据插入到一个整数类型的列中,或者将一个过长的…

    MySQL 2023年5月18日
    00
  • MySQL修改用户(RENAME USER)

    MySQL是一款用于处理关系型数据库的开源软件。在MySQL中,我们通过“用户”来限制对于数据库的访问权限。在实际的工作中,由于各种原因,我们可能需要修改MySQL用户的账号名或密码等信息。本文将介绍如何在MySQL中修改用户的方法。 RENAME USER语法 MySQL提供了RENAME USER语句来修改用户的账号名。语句的一般语法如下: RENAME…

    MySQL 2023年3月10日
    00
  • Mysql查询最近一条记录的sql语句(优化篇)

    一、Mysql查询最近一条记录的sql语句 要查询最近一条记录,通常有两种方法: 方法一:使用LIMIT关键字和ORDER BY子句 下面是最基本的一条SQL语句,将按照选中的字段按照逆序排列: SELECT * FROM 表名 ORDER BY 时间字段 DESC LIMIT 1 下面的例子,查询最后记录更新经历的时间。 SELECT update_tim…

    MySQL 2023年5月19日
    00
  • MySQL中对于not in和minus使用的优化

    MySQL中对于NOT IN和MINUS使用的优化分别是通过使用EXISTS和LEFT JOIN来实现。 1. NOT IN优化 使用EXISTS 当我们使用NOT IN语句时,MySQL会将子查询中的所有结果返回,然后将其与主查询中的每一行进行比较。这可能会导致性能问题,尤其是在大型数据集上查询时。 我们可以使用EXISTS来代替NOT IN,以提高性能。…

    MySQL 2023年5月19日
    00
  • MySQL数据库的多种连接方式以及实用工具

    MySQL数据库的多种连接方式以及实用工具 前言 MySQL是一个流行的开源数据库系统,常用于Web应用程序开发和数据管理。而在使用MySQL时,我们需要通过一种连接方式访问数据库。连接方式的选择,会对开发效率、系统性能等方面产生一定的影响。本文将介绍常见的MySQL连接方式以及实用工具,并通过两个示例说明其使用方法。 1. 本地连接 本地连接是指在同一机器…

    MySQL 2023年5月18日
    00
  • 从零开始学习MySQL调试跟踪(2)

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 作者: Yejinrong/叶金荣 文章来源:GreatSQL社区投稿 启用coredump 制造一个coredump场景 真实故障场景分析跟踪 上一篇文档介绍了如何构建gdb跟踪调试环境,本文介绍如何根据错误日…

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