当前位置:   article > 正文

使用Docker安装MySQL_虚拟机docker安装mysql并提供外部访问

虚拟机docker安装mysql并提供外部访问

前言

本文简单介绍了使用Docker部署MySQL容器,并且开放3306端口,使用外网来访问数据库。

环境

  • CentOS7
  • Docker

如果你的Docker还没有安装,请参考:Docker的安装并配置阿里云镜像加速

docker安装mysql

要在 Docker 中安装 MySQL,可以使用官方提供的 MySQL Docker 镜像。以下是一个简单的步骤:

拉取 MySQL 镜像:

使用以下命令从 Docker Hub 拉取 MySQL 镜像。你可以指定要拉取的 MySQL 版本,比如 mysql:5.7 或 mysql:latest。

docker pull mysql
  • 1

运行 MySQL 容器:
使用以下命令在 Docker 中运行 MySQL 容器。这将创建一个名为 mysql-container 的容器,并启动 MySQL 服务。你可以设置 MySQL 的 root 用户密码和其他选项。

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=your_password -d mysql
  • 1

将 your_password 替换为你设置的 MySQL root 用户的密码。

验证 MySQL 容器是否运行:
使用以下命令检查 MySQL 容器是否正在运行:

docker ps
  • 1

如果看到 mysql-container 在运行,则说明 MySQL 容器已成功启动。

连接到 MySQL 容器:
使用以下命令连接到正在运行的 MySQL 容器,并进入 MySQL 命令行界面:

docker exec -it mysql-container mysql -uroot -p
  • 1

然后输入你设置的 MySQL root 用户密码,即可进入 MySQL 命令行。

通过这些步骤,你就可以在 Docker 中成功安装和运行 MySQL 服务了。

docker运行Mysql,并且能够在外网通过3306访问,怎么做?

要在 Docker 中运行 MySQL 并且能够在外网通过 3306 端口访问,你可以按照以下步骤操作:

运行 MySQL 容器:
使用以下命令在 Docker 中运行 MySQL 容器。这将在容器中启动 MySQL 服务,并映射容器的 3306 端口到宿主机的 3306 端口。

docker run --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_password -d mysql
  • 1

其中 your_password 是你设置的 MySQL root 用户的密码。

如果你的物理机没有开发3306端口,请参考:Linux开放指定端口:例如开放3306(MySQL数据库的端口)

修改 MySQL 配置:

默认情况下,MySQL 只允许本地访问。为了使其可以在外网访问,你需要修改 MySQL 的配置文件 my.cnf。在 MySQL 容器中执行以下命令打开配置文件:

docker exec -it mysql-container bash
vi /etc/mysql/my.cnf
  • 1
  • 2

如果你的docker容器中没有vi

请使用 apt-get 来安装,注意此处容器内没有yum

apt-get update
apt-get install vi
  • 1
  • 2

找到 bind-address 一行,并将其注释掉或改为 0.0.0.0,保存并退出。

重启 MySQL 服务:
在容器中执行以下命令重启 MySQL 服务使配置生效:

service mysql restart
  • 1

更新 MySQL 用户权限:
进入 MySQL 控制台,更新 root 用户的访问权限,使其可以从任意主机访问:

mysql -u root -p
  • 1

然后运行以下 SQL 命令:

如果你使用的是MySQL5的版本:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • 1
  • 2

如果你使用的是MySQL8的版本:

在 MySQL 8 中,IDENTIFIED BY 关键字不再允许在 GRANT 语句中直接设置密码。正确的语法是使用 ALTER USER 命令来设置密码。以下是正确的做法:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
ALTER USER 'root'@'%' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
  • 1
  • 2
  • 3

请将 your_password 替换为你要设置的密码。这样,你就授予了 root 用户从任意主机的所有数据库的全部权限,并设置了相应的密码。

其中 your_password 是你设置的 MySQL root 用户的密码。

防火墙设置:

确保你的服务器防火墙允许外部访问 3306 端口。

完成以上步骤后,你应该能够在外网通过 3306 端口访问你的 MySQL 数据库了。请注意,开放 3306 端口可能会带来安全风险,建议仅在必要时才这样做,并且要注意数据库的安全配置。

使用Navicat在远程连接我的数据库

接下来在你的WIndows系统,使用Navicat连接数据库进行测试即可。

最后

本文不是教程,而是学习笔记。如存在有问题之处,欢迎指正。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/585372
推荐阅读
相关标签
  

闽ICP备14008679号