当拉mysql得时候 无法获取 ,应该重新配置镜像
cd /etc/docker/ [root@localhost docker]# ls certs.d daemon.json key.json seccomp.json [root@localhost docker]# vi daemon.json
{ "registry-mirrors": [ "https://docker.registry.cyou", "https://docker-cf.registry.cyou", "GitHub - DaoCloud/public-image-mirror: 很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。", "欢迎访问 ISCAS 开源镜像站", "https://docker.rainbond.cc" ] }
"https://ox288s4f.mirror.aliyuncs.com", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://mirror.ccs.tencentyun.com"
修改配置后要
重启docker sudo systemctl restart docker 查看docker状态的命令 sudo systemctl status docker 启动docker的命令 sudo service docker start 重新加载配置 sudo systemctl daemon-reload
如果一直拉取不来,试试指令测试下网络
ping www.baidu.com
docker中指令下载MySQL
停止运行MySQL: docker stop mysql 移除docker中的MySQL: docker rm mysql 检查日志 : docker logs mysql2 docker logs mysql dockermysql [root@localhost docker]# docker run -d --name mysqldocker -p 3399:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -u mysql mysql:8.0.33 运行时候将配置文件挂载 -v /path/to/my_custom.cnf:/etc/mysql/my.cnf 如果没有配置文件就创造编辑一个 [root@localhost etc]# mkdir mysql [root@localhost etc]# cd mysql [root@localhost mysql]# touch my_custom.cnf [root@localhost mysql]# vim my_custom.cnf 里面放这个内容 : [mysqld] bind-address = 0.0.0.0 mysqldocker2 docker run -d --name mysqldocker2 -p 3400:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -u mysql mysql:8.0.33
成功启动的MySQL 其中权限问题,得加上 -u
进入容器内部:使用 docker exec
命令进入容器内部,然后尝试连接到 MySQL 服务。
shell
docker exec -it mysql2 bash docker exec -it mysql bash
查看所有运行中的 MySQL 容器
使用以下命令查看所有运行中的 MySQL 容器:
shell
docker ps -a
-
停止防火墙服务:
shell
sudo systemctl stop firewalld
这个命令会立即停止防火墙服务。
-
禁用防火墙服务:
shell
sudo systemctl disable firewalld
这个命令会禁用防火墙服务,防止它在系统启动时自动启动。
-
检查防火墙状态:
shell
sudo systemctl status firewalld
这个命令可以让您查看防火墙服务的当前状态,确认它是否已经停止。
MySQL navicat 连接 docker的MySQL 连接报错出现 :access denied for user mysqldocker xxx.xxx.xxx.xxx(using password:yes)
!!!!!!尝试使用root为用户名 最后成功登录!
方案1:关闭系统的防火墙
然后重启 MySQL服务
-
重新启动容器:在更改配置或权限后,您可能需要重新启动 MySQL 容器以使更改生效:
shell
docker restart mysqldocker2
-
检查 Docker 容器日志:查看容器的日志可能会提供一些关于为什么连接被拒绝的线索:
shell
docker logs mysqldocker2
sudo systemctl restart docker
重启docker
docker exec -it mysql /bin/bash 进入mysql
紧接着用这个命令
mysql -u root -p
登录到你选择的这个mysql容器
docker start mysql 启动docker的MySQL
我如果想要连接docker中的具体的一个mysql容器 那么我的主机名应该怎么设置 (端口映射就行了)
当你想要从外部(比如你的开发机器或者任何其他计算机)连接到 Docker 容器中运行的 MySQL 实例时,你需要确保几个关键点:
-
容器网络设置:确保你的 MySQL 容器可以被外部访问。通常,Docker 容器运行在隔离的网络环境中,但是通过端口映射,你可以让容器内的服务对外部可见。
-
端口映射:在运行 MySQL 容器时,你需要将容器的 MySQL 端口(默认是 3306)映射到宿主机的端口上。例如:
bash
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:8.0.33
这个命令将容器的 3306 端口映射到宿主机的 3306 端口。
-
MySQL 用户权限:你需要确保 MySQL 用户有权限从外部主机连接。这通常意味着你需要给用户授予从
%
(代表任何主机)的连接权限。登录到 MySQL 容器:
bash
docker exec -it mysql mysql -u root -p
然后,运行以下 SQL 命令来授予权限:
sql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-secret-pw' WITH GRANT OPTION; FLUSH PRIVILEGES;
这将允许任何主机上的用户
root
使用密码my-secret-pw
连接到 MySQL。 -
主机名设置:当你从外部计算机连接到 Docker 容器中的 MySQL 时,你需要使用宿主机的 IP 地址作为主机名。如果你的宿主机是本地计算机,并且你使用的是 Docker Desktop,那么通常可以使用
localhost
或127.0.0.1
。如果是远程服务器,你需要使用该服务器的 IP 地址。例如,如果你在本地计算机上运行 Docker Desktop,并且想要使用 MySQL 客户端连接到 MySQL 容器,你可以在 MySQL 客户端中设置如下:
-
主机名:
localhost
-
端口:
3306
-
用户名:
root
-
密码:你设置的 MySQL root 密码
如果你的宿主机是远程服务器,你需要替换
localhost
为服务器的 IP 地址。 -
请记住,允许从任何主机连接到 MySQL 容器可能会带来安全风险,因此请确保使用强密码,并考虑使用 VPN 或其他安全措施来保护你的数据库连接。
查看MySQL的信息 --> docker inspect mysq