Docker 进入 MySQL Access denied for user 'root'@'localhost' (using password: YES)

2,792 阅读2分钟

问题:

我进入电脑终端,使用 Docker 拉取了 MySQL 镜像,创建并且运行了 MySQL 容器,如何拉取镜像并且创建和运行容器,请自行百度,这里不做赘述。

1.查看 docker 所有容器信息命令:docker ps -a

2.我使用命令进入 MySQL 容器:docker exec -it 你的mysql容器ID /bin/bash

3.当我使用命令访问 MySQL:mysql -uroot -p

然后出现了如下报错,

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

可能密码正确,但是拒绝访问;也有可能是密码错误,但是拒绝访问。还请往下看,直接跳过密码验证访问 MySQL.

解决:

1.在进入 MySQL 容器的前提下使用命令: cd /etc/mysql/conf.d/ 进入 conf.d 这个文件夹下。

2.使用命令:ls 查看 conf.d 这个文件夹下是否存在 docker.cnf 这个文件。

- 如果存在 docker.cnf 文件

1.使用命令:vim docker.cnf 进入 vim 编辑器,对 docker.cnf 进行编辑,前提你已经在 Docker 里安装了 vim,如何安装 vim 还请自行百度,嘿嘿。

文件中已经存在:[mysqld] 和 skip-host-cache 和 skip-name-resolve 三行代码

在此基础上新增:skip-grant-tables 这行代码,保存并退出 vim 编辑模式。

2.最后使用命令重启 Docker 里 MySQL容器:docker restart 你的mysql容器ID

3.重新进入你的 MySQL 容器:docker exec -it 你的mysql容器ID /bin/bash

4.重新访问 MySQL: mysql -uroot -p 就可以访问到 Docker 里的 MySQL 了。

- 如果不存在 docker.cnf 文件

1.终端在 conf.d 文件夹下使用命令:touch docker.cnf 创建 docker.cnf 文件。

2.使用命令:vim docker.cnf 对该文件进行编辑,前提你已经在 Docker 里安装了 vim,如何安装 vim 还请自行百度,当然该文件是空的,什么都没有。

3.在文件中第一行添加:[mysqld], 第二行添加:skip-host-cache,第三行添加:skip-name-resolve,第四行添加:skip-grant-tables,保存并退出 vim 编辑模式。

4.最后使用命令重启 Docker 里 MySQL容器:docker restart 你的mysql容器ID

5.重新进入你的 MySQL 容器:docker exec -it 你的mysql容器ID /bin/bash

6.重新访问 MySQL: mysql -uroot -p 就可以访问到 Docker 里的 MySQL 了。

结语:

该文章书写的格式不是很好看,如果有什么没看懂的地方,还请评论区里提出问题,谢谢大家观看这篇文章。转载请标明出处,谢谢。