一、docker安装mysql镜像
搜索images
docker search mysql
我配置了阿里云镜像加速器,找不到mysql镜像.
由于不知道名原因很多国内拉取镜像都下架了docker镜像导致找不到mysql镜像;
拉取mysql镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0
拉取mysql镜像成功。
二、数据挂载
创建本地目录用于挂载mysql数据和配置
mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf
在/root/mysql/conf中创建 *.cnf 文件
touch my.cnf
创建容器,将数据,日志,配置文件映射到本机
docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e mysql_root_password=yourpassword -d swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0
docker run
:这是创建新容器的 docker 命令。-p 3306:3306
:这将容器内部的 mysql 服务端口(3306)映射到宿主机的同一端口,允许您从宿主机或其他网络中的机器访问 mysql 服务。--name mysql
:这为新容器指定了一个名称,这里是mysql
。-v /root/mysql/conf:/etc/mysql/conf.d
:这将宿主机上的/root/mysql/conf
目录挂载到容器内部的/etc/mysql/conf.d
目录,用于存储 mysql 配置文件。-v /root/mysql/logs:/logs
:这将宿主机上的/root/mysql/logs
目录挂载到容器内部的/logs
目录,用于存储 mysql 日志文件。-v /root/mysql/data:/var/lib/mysql
:这将宿主机上的/root/mysql/data
目录挂载到容器内部的/var/lib/mysql
目录,用于存储 mysql 数据文件。这确保了数据的持久化,即使容器被删除,数据也不会丢失。-e mysql_root_password=
yourpassword:这设置了环境变量,用于定义 mysqlroot
用户的密码。请确保使用一个强密码来提高安全性。-d swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0
:这指定了容器应在后台运行,并使用指定的 mysql 镜像。这里的镜像路径指向华为云 swr 上的 mysql 8.0 镜像.
检查mysql是否启动成功:
docker ps -a
三、dbeaver数据库连接
连接dbeaver常见的报错:
问题一、public key retrieval is not allowed
问题图片:
原因:
public key retrieval is not allowed:原因是:通常出现在使用 ssl 连接到 mysql 数据库时。这个错误表明 mysql 服务器配置为要求 ssl 连接,但是客户端(在这种情况下是 dbeaver)没有提供正确的证书或密钥。
处理:
找到:allowpublickeyretrieval驱动属性,把false改为true,如图所示:
再次连接:
问题二、连接mysql时,报access denied for user
报:error 1045 (28000): access denied for user 'root'@'localhost' (using password: yes)
意味着您尝试使用mysql的root用户登录,但是提供的密码不正确,或者root用户没有从localhost登录的权限。
步骤 1:确保您使用的是正确的密码
确认您记得的root密码是正确的。如果您不确定密码是否正确,您可能需要重置它。
在你保证密码正确情况下,如果出现这个错误,可能原因是:之前你执行docker挂载mysql容器,在/root/mysql/data下已经有之前缓冲数据,执行的新docker run,由于两次挂载mysql容器密码不一致,导致登录不成功。
解决方案:删除/root/mysql/data目录下文件,执行删除docker挂载mysql容器后,然后执行docker run 挂载mysql容器;
进入容器中的 mysql:
docker exec -it mysql mysql -u root -p
输入密码:*********
步骤 2:尝试无密码登录(如果root账户没有设置密码)
如果root账户没有设置密码,或者您不确定是否设置了密码,可以尝试无密码登录:
在/root/mysql/conf目录下,打开my.cnf配置,加上:
--skip-grant-tables
这里不做过多解释,如需详情了解操作,各位自行百度一下;
步骤3: root用户没有从localhost登录的权限
进入容器中mysql:
docker exec -it mysql mysql -u root -p
输入密码:*******,登录到 mysql 后,
更改密码:
使用以下命令更改 root
用户的密码:
alter user 'root'@'localhost' identified by 'new_password';
new_password:输入自己的密码;
允许 root 用户从任何 ip 地址连接:
alter user 'root'@'%' identified by 'new_password';
替换 'new_password'
为您想要设置的新密码。
刷新权限:
更改密码后,执行以下命令使更改生效:
flush privileges;
退出 mysql:
使用以下命令退出 mysql 客户端:
exit;
测试新密码:
为了验证新密码是否生效,您可以尝试再次登录 mysql:
docker exec -it mysql mysql -u root -p
当提示时,输入您新设置的密码。
请注意,将密码直接包含在命令行中(如 -p'new_password'
)可能会因为引号使用不当而导致问题。通常建议在命令行中只使用 -p
参数,然后在提示时输入密码。
使用连接mysql工具连接服务器mysql:
验证用户身份的插件名称
select user, host, plugin from mysql.user
mysql_native_password:作为mysql之前的默认身份验证插件,很多老版本的客户端和工具默认支持这个插件。因此,对于一些旧的应用程序和库,mysql_native_password
可能会有更好的兼容性。
caching_sha2_password:从mysql 8.0开始,它成为了默认的身份验证插件。尽管它提供了更高的安全性,但一些旧版客户端可能不支持该插件。在这种情况下,需要更新客户端或驱动程序才能兼容。
四、删除docker镜像mysql
查找镜像
docker images | grep mysql
删除镜像
一旦您知道了要删除的 mysql 镜像的名称或 id,可以使用以下命令删除它:
docker image rm 1eba4c9bcaa8
强制删除命令:docker image rm -f mysql
五、docker删除容器
暂停正在运行mysql容器
docker stop 343ee69c170d
删除mysql容器
docker rm 343ee69c170d
注意:343ee69c170d是docker中mysql容器id;
总结
到此这篇关于docker拉取mysql8.0镜像以及安装的文章就介绍到这了,更多相关docker拉取mysql8.0镜像及安装内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论