前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker创建mysql,以及mysql无法连接问题

docker创建mysql,以及mysql无法连接问题

作者头像
allsmallpig
发布2024-03-19 09:04:33
1K0
发布2024-03-19 09:04:33
举报
文章被收录于专栏:allsmallpi博客allsmallpi博客

 1、docker开放3306端口

Docker开放3306端口实现步骤 本文将介绍如何使用Docker开放3306端口,以便其他容器或外部应用程序可以通过该端口访问MySQL数据库。以下是实现步骤的简要说明:

步骤    描述 第一步    创建一个MySQL容器 第二步    打开3306端口 第三步    配置MySQL用户和密码 第四步    连接到MySQL容器 现在,让我们逐步详细说明每个步骤,并提供相应的代码示例。

第一步:创建一个MySQL容器 首先,我们需要创建一个MySQL容器。可以使用以下命令来完成:

代码语言:javascript
复制
docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=<root_password> mysql

1. 上述命令将创建一个名为mysql-container的MySQL容器,并指定了一个环境变量MYSQL_ROOT_PASSWORD,其中<root_password>应替换为您想要设置的实际密码。该容器将自动从[Docker Hub](

第二步:打开3306端口 默认情况下,MySQL容器不会将3306端口暴露给外部网络。为了使其他容器或外部应用程序能够访问该端口,我们需要映射容器内的3306端口到主机上的一个端口。可以使用以下命令来完成:

代码语言:javascript
复制
docker run -d --name mysql-container -p <host_port>:3306 -e MYSQL_ROOT_PASSWORD=<root_password> mysql

1. 上述命令中的<host_port>应替换为您想要将容器内的3306端口映射到的实际主机端口。

第三步:配置MySQL用户和密码 一旦MySQL容器正在运行并且已打开3306端口,我们就可以连接到容器并配置MySQL用户和密码。可以使用以下命令连接到MySQL容器的shell:

代码语言:javascript
复制
docker exec -it mysql-container mysql -uroot -p<root_password>

1. 上述命令将打开一个MySQL shell,其中<root_password>应替换为您在第一步中设置的实际密码。

在MySQL shell中,您可以使用以下命令创建新的MySQL用户并授予适当的权限:

代码语言:javascript
复制
CREATE USER '<username>'@'%' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'%' WITH GRANT OPTION;

1. 2. 上述代码中的<username>和<password>应替换为您要创建的实际用户名和密码。%表示允许从任何主机连接到MySQL。如果您只想允许特定主机连接,请将%更改为相应的主机名或IP地址。

第四步:连接到MySQL容器 现在,我们已经完成了Docker开放3306端口的设置,我们可以使用以下命令连接到MySQL容器:

代码语言:javascript
复制
mysql -h <host> -P <host_port> -u <username> -p<password>

1. 上述命令中的<host>和<host_port>应替换为您在第二步中映射的实际主机和端口。<username>和<password>应替换为您在第三步中创建的实际用户名和密码。

完成这些步骤后,您应该能够成功连接到MySQL容器,并通过3306端口访问MySQL数据库。

2、连接数据库报plugin caching_sha2_password could not be loaded解决方案

问题描述 连接数据库时出现plugin caching_sha2_password could not be loaded报错

原因分析: 因为MySQL新版默认使用caching_sha2_password作为身份验证的插件,而旧版本使用的是mysql_native_password。当出现plugin caching_sha2_password could not be loaded报错,我们更换为旧版本

解决方案:

代码语言:javascript
复制
docker exec -it mysql bash

1.使用远程命令行登录mysql

代码语言:javascript
复制
mysql -h localhost -u root -p root -P 3306

这一步骤自己调试命令。 登录成功后会出现

2.操作数据库命令:

代码语言:javascript
复制
use mysql;

3.修改root用户的身份验证插件

本地连接:

代码语言:javascript
复制
alter user root@localhost identified with mysql_native_password by '123456';
 
FLUSH PRIVILEGES;

远程连接:

代码语言:javascript
复制
alter user root@'%' identified with mysql_native_password by '123456';
FLUSH PRIVILEGES;

4.最后再次连接数据库,出现你喜欢看到的页面!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  1、docker开放3306端口
  • 2、连接数据库报plugin caching_sha2_password could not be loaded解决方案
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档