1、docker开放3306端口

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

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

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

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端口到主机上的一个端口。可以使用以下命令来完成:

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:

docker exec -it mysql-container mysql -uroot -p<root_password>


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

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

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容器:

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报错,我们更换为旧版本

解决方案:

docker exec -it mysql bash

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

mysql -h localhost -u root -p root -P 3306

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

2.操作数据库命令:

use mysql;


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

本地连接:

alter user root@localhost identified with mysql_native_password by '123456';
 
FLUSH PRIVILEGES;


远程连接:

alter user root@'%' identified with mysql_native_password by '123456';
FLUSH PRIVILEGES;


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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐