问题一:

参考docker 官方的mysql文档中,使用如下命令在docker创建一个容器为mysql,设置配置文件、数据挂载,root的密码为123213

docker run --name tools-mysql -p 3306:3306 --privileged=true -v /home/tools/mysql/conf.d:/etc/mysql/conf.d -v /home/tools/mysql/datSQL_ROOT_PASSWORD=123123 -d mysql:latest

但是在进入mysql容器后,发现无法使用root 123123登陆进去,提示如下:

root@3a91127e32b0:/# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

下面的解决方法,也适用于忘记了root密码, 如何更改

解决:

先尝试一下没有密码能否登录,直接输入

root@3a91127e32b0:/# mysql

搜索一番后,发现文章连接MySQL数据库时常见故障问题的分析与解决对错误ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)分析的很详细,但我的问题是,根本进不去数据库,所有修改授权访问的ip,修改密码都无法进行

又一番搜索,找到了一篇文章,由于我使用的docker,操作步骤有些不一样,而且有些不适用mysql 8.0,下面列出我的有效步骤

1,在挂载的配置文件中,添加如下配置,添加skip-grant-tables,一定要在mysqld下面

[mysqld]
skip-grant-tables

注意,开启skip-grant-tables,会自动开启skip-networking,阻止远程连接。以下摘自官方文档

Because this is insecure, if the server is started with the –skip-grant-tables option, it enables –skip-networking automatically to prevent remote connections.

2,docker restart tools-mysql重启mysql,再尝试登陆mysql,遇到需要输入密码,直接回车

3,执行 use mysql

但是原文的第4步更改密码,始终报错

ERROR 1064 (42000): 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 '("123") where user="root"' at line 1

又进行不下去了,又经过一番搜索尝试,找到了这篇Centos7重置Mysql 8.0.1 root 密码

上面报错的原因:在mysql 5.7.9以后废弃了password字段和password()函数;

4、给root用户重置密码;

首先查看当前root用户相关信息,在mysql数据库的user表中;

select host, user, authentication_string, plugin from user; 
  • host: 允许用户登录的ip,%表示可以远程;

  • user:当前数据库的用户名;

  • authentication_string: 用户密码;

  • plugin: 密码加密方式;

mysql> select host, user, authentication_string, plugin from user;
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| host      | user             | authentication_string                                                  | plugin                |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| %         | root             | $A$005$ i=q{UG(G~?_`oD)FqNsHAKYyvUkHbloZDos6mNGoRJmVyKBBqzHGpZD7f/ | caching_sha2_password |
| localhost | mysql.infoschema | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              | mysql_native_password |
| localhost | mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              | mysql_native_password |
| localhost | mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              | mysql_native_password |
| localhost | root             | $A$005$<4Uvms>T y#no5E/Hyf..Fujny8Byr1tKlqXWRwCihCkiJefsEXX/C7 | caching_sha2_password |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+

5、如果当前root用户authentication_string字段下有内容,先将其设置为空;

update user set authentication_string='' where user='root' and host='localhost';  

6、退出mysql, 删除my.cnf文件最后的 skip-grant-tables 重启mysql服务;

使用root用户进行登录,因为上面设置了authentication_string为空,所以可以免密码登录;

mysql -u root -p
passwrod:直接回车

7、使用ALTER修改root用户密码;

ALTER user 'root'@'localhost' IDENTIFIED BY '123123'  

如果不关闭--skip-grant-tables,直接运行上面的命令,会报如下错误:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

我后来把data(挂载数据的目录)清空后,重新安装,发现进入容器后又可以登陆进去了,真是奇怪了,只是远程登陆不了

问题二:

远程连接不上,提示如下:

plugin 'caching_sha2_password' cannot be loaded

原因:

使用的plugin不一样,需要使用mysql_native_password而上面的是caching_sha2_password

解决:

使用如下命令修改

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xue123';
Query OK, 0 rows affected (0.50 sec)

mysql> select host, user, authentication_string, plugin from user;
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| host      | user             | authentication_string                                                  | plugin                |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| %         | root             | *1066B97AE017C2ACE56EF0001E8B2C3444CC54AC                              | mysql_native_password |
| localhost | mysql.infoschema | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              | mysql_native_password |
| localhost | mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              | mysql_native_password |
| localhost | mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              | mysql_native_password |
| localhost | root             | $A$005$oW!)
                                            >b8^Z3.StHzyYbgM9IWEmItq.womSEd3LiCdoQIKefNdftmbi0a2 | caching_sha2_password |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+

问题三:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

重新登陆sql,就可以了,不知道什么问题,难道是因为刚刚启动,连接的太着急了?

参考:

Authentication plugin ‘caching_sha2_password’ cannot be loaded
Centos7重置Mysql 8.0.1 root 密码
连接MySQL数据库时常见故障问题的分析与解决

Mysql 登录提示”ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)”

Centos7 在docker中安装Mysql 8.0 的相关问题相关推荐

  1. 如何在Docker中安装MySQL数据库

    1.Docker环境 视频教程:https://www.bilibili.com/video/BV1xv4y1S7kA 2.搜索镜像 https://hub.docker.com/网站搜索MySQL, ...

  2. linux mysql8.0 rpm安装_Linux(CentOS7)使用 RPM 安装 mysql 8.0.11的教程

    这篇文章主要介绍了Linux(CentOS7)使用 RPM 安装 mysql 8.0.11的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参 ...

  3. docker 中安装 MySQL 以及使用

    环境:我使用3A服务器搭建centos7 简介 这里的实现思路是,先拉取完 MySQL 镜像之后,启动 MySQL 容器,然后将 MySQL 的配置文件拉取到本地,关闭之前启动的容器,重新使用挂载的方 ...

  4. Docker中安装Mysql报错--[Warning] TIMES TAMP with implicit DEFAULT value is deprecated. Please use - - exp

    安装一个带有mysql的docker镜像 docker run --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=roo ...

  5. docker中安装mysql

    一.拉取mysql镜像,这里示例mysql5.7.命令:docker pull mysql:5.7 二.创建一个mysql的容器 docker run --name "mysql" ...

  6. 靖哥哥教你如何在docker中安装mysql

    原文链接:靖哥哥博客 https://www.jggbk.com/blogs/article/29.html

  7. 以两台Linux主机在docker中实现mysql主主备份以用nginx实现mysql高可用

    使用nginx反向代理主主备份的两台mysql,连接时连接nginx,当其中一台myql停止后,仍然可以正常使用,如果使用k8s 会简单许多.所谓主主复制就是在主从复制的基础上掉了个头. 请博主买块糖 ...

  8. docker mysql8.0挂载_Docker安装MySQL 8.0.17 并挂载数据及配置文件,修改时区

    一般来说是不需要手动指定MySQL挂载卷,因为mysql会自动挂载, 通过 dokcer inspect 你的容器名称 可以查看容器已挂载的路径 /var/lib/docker/volumes/855 ...

  9. CentOS7安装MySQL 8.0安装

    Centos安装mysql 1.配置MySQL 8.0的安装源: sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-e ...

  10. centos7中安装mysql步骤及命令教程

    centos7(linux)中安装mysql安装步骤及命令教程 1.首先检查是否有安装过mysql,命令如下: rpm -qa | grep mysql 输入该命令之后返回为空,即没有安装. 2.这里 ...

最新文章

  1. CPU 以字节为单位编址,而 C 语言指针以指向的数据类型长度作自增和自减。
  2. Python语言学习之文件格式后缀那些事:python和常见各种文件格式后缀介绍、使用方法之详细攻略
  3. 我们需要StringBuffer么?
  4. 论文浅尝 | 基于属性嵌入的知识图谱间实体对齐方法
  5. Win10下VS2015(WDK10)驱动开发环境配置
  6. 找到符合条件的索引_高频面试题:MySQL联合索引的最左前缀匹配原则
  7. SpringBoot-(1)-IDEA创建SpringBoot项目并运行访问接口
  8. centos7 crontab 定时执行python任务不执行的原因及解决办法
  9. 单例模式(Singleton mode)实战讲解
  10. 罗马仕php30重量,认真测评 篇三:罗马仕sence8P+两年使用报告
  11. 三菱PlC程序大型项目QCPU+QD77MS16
  12. 整理下Jquery中用到的英语单词 带音标
  13. kendo ui开源工具:Kendo ui core
  14. PAL与NTSC制式的详解
  15. 基于MK802的应用开发和相关的工具
  16. cmd看控制台输出红桃、方块、黑桃、梅花乱码解决
  17. 【犯二记录】链表结点换位引发的思维僵化,太可怕,智商 == 0
  18. IIS的安装及web服务器配置
  19. uni-app使用,并引入thor-ui
  20. smart显示无服务器,RAKsmart美国服务器常见的问题和解决

热门文章

  1. 泛泛而谈的菜鸟学习记录(四)—— Vorley噪声生成原理及噪声边缘提取
  2. python躲方块_pygame实现的《躲小球》
  3. python求方程最小值_python topk()函数求最大和最小值实例
  4. 微信小程序|开发FAQ篇
  5. Vitalik:ETH2.0 之后,协议层会稳定下来
  6. 你打开的那些网页,大概率是被监控了
  7. 一次简单的流量控制实现
  8. 支付宝app支付产品不通过app集成sdk发起支付(附源码)
  9. c语言.jpg图片转成数组_JPG图片怎么转换成PDF?可以试试这些转换方法!
  10. linux窗口按钮,在KDE Linux中配置窗口装饰按钮 | MOS86