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.最后再次连接数据库,出现你喜欢看到的页面!