contos7 docker 并且安装 mysql 简书

本文介绍如何使用Docker部署MySQL数据库,包括镜像搜索、下载、容器启动及远程连接配置。解决常见问题,如端口映射、防火墙设置及用户权限调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker  简单操作

1:docker search mysql  查看mysql版本

2:docker pull mysql:lastest   下载最新版本镜像

3:docker run **  根据自己需求  启动下载的镜像,生成容器

4:docker ps  查看启动的容器

5:docker ps -a 查看所有容易(报错启动和未启动的)

6:docker stop mysql  停止mysql容器

7:docker restart mysql  启动mysql容器

8:docker rm mysql 删除容器(先停止容器再删除)

 

1:docker安装

  https://www.runoob.com/docker/centos-docker-install.html

  查看文档:很详细

2:docker安装mysql 

1:下载mysql镜像

      查看mysql版本 

             命令  docker search mysql

      下载mysql最新镜像 

             命令  docker pull mysql:latest

2:启动mysql

     docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

     -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服                                  务。

      MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码

3:开放3306端口

   1:登录阿里云配置安全策略 

  

2:xshell进入linux服务器 开放3306端口

 

CentOS7使用firewalld防火墙(7之前使用iptables),需要使用到的命令如下: 
1) systemctl start firewalld:启动前可以先用systemctl status firewalld查看firewalld状态; 
2) firewall-cmd --zone=public --add-port=8761/tcp --permanent:打开8761端口,其中端口号(8761)根据实际需要使用的端口决定; 
3) firewall-cmd --reload:重启服务; 
4) firewall-cmd --zone=public --list-ports:可以用来查看已打开的端口号; 
5) firewall-cmd --zone=public --remove-port=8761/tcp --permanent:当不希望这个端口被打开时,则使用该命令删除;

Ps:如果使用的是阿里云的CentOS7服务器,则还需要额外在控制台管理处打开需要使用的端口。(如果想用阿里云服务器的25端口发邮件,还得在安全中心提交申请…) 

 

重要:

远程连接docker会报错;以下操作

非root用户使用docker命令:将用户添加docker组,
gpasswd -a username docker

docker mysql 启动后无法远程连接:
docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

启动后用navicat无法连接,错误如下:
在这里插入图片描述

解决办法:

docker exec -it mysql01 bash
mysql -u root -p

(1) 查看用户信息

select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host      | user             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | root             | caching_sha2_password | $A$005$wu)k:T&:	i%3_q-u=D2yi.Zt/nmvVUijtFm7hzFHK/UqC7W9RxMS9KHAFhh6 |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
N;}J&alhost | root             | caching_sha2_password | $A$005$ 
B5): L6^xTKlNIRYWKAdK2Mbn.G3LfJsDoVaZFDNRxo3MekXm98 |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.01 sec)

mysql> 

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.02 sec)
---------------------
mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host      | user             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | root             | mysql_native_password | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B                              |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
N;}J&alhost | root             | caching_sha2_password | $A$005$ 
B5): L6^xTKlNIRYWKAdK2Mbn.G3LfJsDoVaZFDNRxo3MekXm98 |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

//刷新权限
FLUSH PRIVILEGES;--刷新权限

阿里云服务器配置后依然无法连接问题
在这里插入图片描述
配置安全规则
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

<think>好的,我现在需要帮助用户在CentOS 7上使用Docker安装MySQL。首先,我得回忆一下Docker的基本操作步骤,以及安装MySQL的流程。根据用户提供的引用内容,有几个步骤可能需要整合。 首先,用户需要安装Docker。不过根据引用内容,用户可能已经安装Docker,但不确定是否需要先安装Docker。根据引用1到5,似乎有些引用提到的是直接拉取MySQL镜像,所以可能用户已经有Docker环境。不过为了全面,可能需要先检查Docker是否安装,如果没有的话,指导如何安装。但根据问题,用户可能更关注的是使用Docker安装MySQL,所以可能不需要详细说明Docker安装,但最好还是确认一下。 接下来,拉取MySQL镜像。根据引用5,可以使用docker pull mysql,也可以指定版本,比如mysql:5.7或者mysql:8.0。比如引用1用的是centos/mysql-57-centos7,而引用2和5提到了mysql:8.0。这里可能需要说明不同镜像的选择。用户可能需要选择官方镜像还是其他版本,比如centos/mysql-57-centos7是CentOS维护的MySQL 5.7镜像,而mysql:tag是官方镜像。可能推荐使用官方镜像,比如mysql:5.7mysql:8.0。 然后,运行容器。运行命令时需要注意参数,比如端口映射、数据卷挂载、设置root密码、环境变量等。根据引用中的例子,比如docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag。需要说明各个参数的作用,比如-e MYSQL_ROOT_PASSWORD设置密码,-p映射端口,-v挂载数据卷以防止数据丢失。 之后,进入容器进行配置,比如设置远程访问。根据引用3和4,可以使用docker exec -it mysql bash进入容器内部,然后登录MySQL,执行SQL命令,比如创建用户、授权等。例如,在MySQL 8.0中可能需要修改认证插件,或者允许root远程登录。 另外,可能需要开放防火墙端口,比如CentOS 7的firewalld需要开放3306端口,或者关闭防火墙测试。这点在引用中没有提到,但实际使用中可能会遇到问题,所以需要包含这一步骤。 还要注意数据持久化,使用-v参数将容器内的数据目录挂载到宿主机,这样即使容器删除,数据也不会丢失。比如-v /my/own/datadir:/var/lib/mysql。 另外,用户可能需要知道如何查看容器日志,检查MySQL是否正常运行,使用docker logs命令。 现在需要将步骤整合成一个清晰的流程: 1. 安装Docker(如果尚未安装)。 2. 拉取MySQL镜像。 3. 运行容器,设置密码、端口映射、数据卷。 4. 进入容器配置MySQL,允许远程连接。 5. 防火墙设置。 6. 测试连接。 还需要注意不同MySQL版本的差异,比如MySQL 8.0默认使用caching_sha2_password,旧版本客户端可能不支持,需要更改为mysql_native_password,或者在创建用户时指定插件。 根据引用2,安装MySQL8.0时可能需要设置远程登录,可能需要执行类似以下命令: CREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; 而在MySQL 5.7中可能不需要修改认证插件,但同样需要授权用户从远程访问。 最后,生成相关问题,比如如何设置数据持久化,如何备份数据,如何处理权限问题等。 现在需要检查是否所有步骤都覆盖到了,并且语法正确,比如docker命令的参数是否正确,环境变量是否正确,以及是否需要额外的配置步骤。</think>### 在 CentOS 7 上使用 Docker 安装 MySQL 的步骤 #### 1. **安装 Docker(若未安装)** ```bash # 更新系统包 sudo yum update -y # 安装 Docker 依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加 Docker 仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装 Docker 引擎 sudo yum install -y docker-ce docker-ce-cli containerd.io # 启动并设置 Docker 开机自启 sudo systemctl start docker sudo systemctl enable docker ``` #### 2. **拉取 MySQL 镜像** - **选择版本**:默认拉取最新版(如 MySQL 8.0): ```bash docker pull mysql ``` - **指定版本**(如 MySQL 5.7): ```bash docker pull mysql:5.7 # 官方镜像 # 或使用 CentOS 维护的镜像(引用[1]) docker pull centos/mysql-57-centos7 ``` #### 3. **运行 MySQL 容器** ```bash docker run -d \ --name mysql-container \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=your_password \ -v /宿主机数据目录:/var/lib/mysql \ mysql:tag ``` - **参数说明**: - `-p 3306:3306`:将容器 3306 端口映射到宿主机。 - `-e MYSQL_ROOT_PASSWORD`:设置 root 用户密码[^2][^5]。 - `-v`:挂载数据卷以实现持久化[^3]。 #### 4. **配置远程访问** - **进入容器**: ```bash docker exec -it mysql-container /bin/bash # 引用[3][^4] ``` - **登录 MySQL**: ```bash mysql -u root -p ``` - **授权远程访问**(以 MySQL 8.0 为例): ```sql CREATE USER 'root'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` - **MySQL 8.0 需修改认证插件**(可选): ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; ``` #### 5. **防火墙配置(若需远程访问)** ```bash sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload ``` #### 6. **验证连接** - 使用客户端工具(如 `mysql -h 宿主机IP -P 3306 -u root -p`)测试连接。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值