问题:
我进入电脑终端,使用 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 了。
结语:
该文章书写的格式不是很好看,如果有什么没看懂的地方,还请评论区里提出问题,谢谢大家观看这篇文章。转载请标明出处,谢谢。