首页 > 数据库 >在本地启动一个 Docker 的 MySQL 服务

在本地启动一个 Docker 的 MySQL 服务

时间:2023-07-19 12:22:41浏览次数:42  
标签:容器 container MySQL 端口 本地 mysql 3306 Docker

要在本地启动一个 Docker 的 MySQL 服务,并允许其他 Docker 容器连接到该数据库,您可以按照以下步骤操作:

1. 确保已在本地安装了 Docker。您可以在终端中运行 `docker --version` 命令来检查 Docker 是否已正确安装。

2. 使用以下命令来拉取 MySQL 8.0 镜像:

```
docker pull mysql/mysql-server:8.0
```

3. 接下来,您可以使用以下命令来启动一个 MySQL 容器,并将其命名为 `mysql_container`:

```
docker run -d --name mysql_container -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 mysql/mysql-server:8.0
```

请将 `your_password` 替换为您所需的 MySQL root 密码。

4. 等待一段时间,直到容器启动并运行。您可以使用以下命令来检查容器的状态:

```
docker ps
```

如果 `mysql_container` 显示为已运行,则说明 MySQL 容器已成功启动。

5. 现在,您可以在另一个 Docker 容器中连接到 MySQL 容器。为此,您需要在另一个容器中使用 MySQL 客户端工具,例如 `mysql` 命令行工具。

首先,启动另一个容器,并将其连接到 MySQL 容器的网络中。您可以使用以下命令来创建一个新容器:

```
docker run -it --name client_container --network container:mysql_container mysql/mysql-server:8.0 mysql -h mysql_container -u root -p
```

此命令将创建一个新的容器,并将其连接到 `mysql_container` 的网络中。它还将启动 MySQL 客户端工具并连接到 MySQL 容器。

6. 在新容器中,您将被提示输入密码。输入之前在第 3 步中设置的 MySQL root 密码。

现在,您已成功连接到 MySQL 容器。您可以在新容器中执行任何 MySQL 命令,例如创建数据库、表格等。

请注意,上述步骤仅适用于本地 Docker 环境。如果您在生产环境中使用 Docker,建议采取适当的安全措施来保护数据库访问和密码。MySQL 8.0 镜像的默认账户名是 root。在运行 Docker 容器时,通过 `-e MYSQL_ROOT_PASSWORD=your_password` 参数设置的密码将用于 root 用户。您可以使用 root 用户连接到 MySQL 容器,并进行数据库管理操作。

 

(base) kaka@KakadeMacBook-Pro docker % docker run -d --name kaka_mysql_container -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql/mysql-server:8.0
590db2777460c09a6a77b788f233f3590f62d09370dd12008ea3ccc24c7539c6
docker: Error response from daemon: driver failed programming external connectivity on endpoint kaka_mysql_container (660c44bd96d080e7ac5e2fe9c2f335a314c6d0b0f4b64f2dd42db39ad5f766e1): Bind for 0.0.0.0:3306 failed: port is already allocated.
(base) kaka@KakadeMacBook-Pro docker % 报错

  

这个错误通常是因为端口 3306 已经被其他进程占用导致的。您可以尝试以下解决方法:

1. 检查是否已经有其他容器或进程在使用端口 3306。您可以使用以下命令来查看正在运行的容器和它们使用的端口:

```
docker ps
```

如果在列表中找到正在运行的容器,并且该容器使用了端口 3306,则需要停止或删除该容器,或者修改您的 MySQL 容器使用的端口。

2. 如果没有其他容器使用端口 3306,但您仍然收到端口已被占用的错误消息,请检查是否有其他进程在您的主机上监听了该端口。您可以使用以下命令来查找占用端口 3306 的进程:

```
lsof -i :3306
```

如果找到了正在使用该端口的进程,请停止该进程或修改您的 MySQL 容器使用的端口。

3. 如果以上方法仍然无法解决问题,可以尝试修改您的 MySQL 容器使用的端口,例如将 `-p 3306:3306` 修改为 `-p 3307:3306`,将本地的 3307 端口映射到 MySQL 容器的 3306 端口。

请注意,确保不要使用已经被其他服务占用的端口,以避免冲突。

标签:容器,container,MySQL,端口,本地,mysql,3306,Docker
From: https://www.cnblogs.com/kaka0318/p/17565246.html

相关文章

  • mysql 5.7 修改密码 docker 导出容器
    MISCONFRedisisconfiguredtosaveRDBsnapshots,butiscurrentlynotabletopersistondisk.Commandsthatmaymodifythedatasetaredisabled.PleasecheckRedislogsfordetailsabouttheerror updateusersetauthentication_string=password('......
  • 安装MySQL 8.0客户端
    打开终端,使用root用户登录系统。导入MySQL官方的存储库密钥:#rpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql下载MySQL官方的YUM存储库定义文件并将其移动到指定位置:#wgethttps://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpmrpm-ivhmysql8......
  • mysql如何判断是不是数字?
    在MySQL中,可以使用以下方法来判断一个值是否是数字:1.使用内置函数:MySQL内置了一些函数,如ISNUMERIC()、CAST()、CONVERT()等,可以用来判断一个值是否为数字。例如,使用ISNUMERIC()函数判断一个字符串是否是数字,可以执行以下查询: SELECTISNUMERIC('12345');--返回1,表示是数字......
  • MySQL在分页查询时的limit深分页问题
    在平时业务中我们会发现当分页数据特别大的时候,会出现SQL很慢的情况,下面我们来分析下为什么会出现这种情况以及如何去解决一、limit深分页问题解析我们有如下一张表CREATETABLEaccount(idint(11)NOTNULLAUTO_INCREMENTCOMMENT'主键Id',namevarchar(255)DEFAU......
  • docker开启远程访问,并添加TLS证书认证
    默认情况下,docker是无法远程访问的但是有些场景下,是需要远程访问的新建存放证书的目录mkdir/etc/docker/certs.dcd/etc/docker/certs.d生成证书生成ca的私钥opensslgenrsa-aes256-passoutpass:123456-outca-key.pem4096生成CA证书opensslreq-new-x509-pas......
  • docker-compose使用踩坑
    之前在cm311-1a机顶盒上刷了armbian,开始把之前n5100x86小主机上的服务往上迁移,之前一直用docker,但是docker-compose没用过,正好部署rustdesk官网有docker-compose的示例,就顺便学习了一下,过程中遇到一些问题,特此记录:1.没有docker-compose命令,只有dockercompose(两个单词......
  • Docker被墙了怎么办?换源处理!
    Docker被墙了怎么办?换源处理!命令行输入以下命令换源,按提示进行操作(推荐南京大学和微软云的源)bash<(curl-sSLhttps://ghproxy.com/https://github.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)命令行代码来自于镜像中国......
  • GitLab + Jenkins + Docker 本地自动化部署
    GitLab+Jenkins+Docker本地自动化部署原创 贺大官人 猿起猿进 2023-07-1215:51 发表于浙江 GitLab+ Jenkins+ Docker+ Nginx 前端自动化部署 注GitLab 本地化部署——前端代码版本管理Docker+ Nginx 本地容器化部署前端项目——需手动上传......
  • Mysql基础6-常用数据库函数
    一、字符串函数1、常见Mysql内置字符串函数concat(s1,s2,s3,...):字符串拼接,将s1,s2,s3...等拼接成一个字符串lower(str):将字符串str全部转为小写upper(str):将字符串str全部转为大写lpad(str,n,pad):左填充,将字符串pad对str的左边进行填充,达到n个字符串长度rpad(str,n,......
  • MySQL
    SQLSQL通用语法SQL语句可以单行或多行书写,以分号结尾。SQL语句可以使用空格/缩进来增强语句可读性。MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。注释单行注释:--注释内容或者#注释内容(MySQL特有)多行注释:/*注释内容*/ DDL-数据库操作查询......