centos7安装docker及安装mysql8.0详细操作

本文详细介绍了在CentOS7上安装Docker及MySQL8.0的步骤,包括卸载旧版Docker,设置Docker存储库,安装Docker引擎,配置Docker镜像加速,以及安装和配置MySQL8.0容器。解决了常见的安装问题,如远程访问和权限配置。

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

centos7安装docker及安装mysql8.0详细操作

官方安装文档:https://docs.docker.com/engine/install/centos/

卸载旧版本

较旧的Docker版本称为dockerdocker-engine。如果已安装这些程序,请卸载它们以及相关的依赖项。

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

设置存储库

安装yum-utils软件包(提供yum-config-manager 实用程序)并设置稳定的存储库。

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装DOCKER引擎

安装最新版本的Docker Engine和容器,或者转到下一步安装特定版本:

$ sudo yum install docker-ce docker-ce-cli containerd.io

启动Docker

$ sudo systemctl start docker

查看版本

$ docker -v

查看镜像

$ docker images

设置开机自启

$ sudo systemctl enable docker

配置docker阿里云镜像加速

官方地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF' 
{  
"registry-mirrors": ["https://790odqyb.mirror.aliyuncs.com"] 
} 
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

docker安装mysql

官方地址:https://hub.docker.com/

拉取镜像mysql(8.0)命令:

$ docker pull mysql:8.0

创建文件夹做挂载

$ mkdir /mydata/mysql/conf

$ mkdir /mydata/mysql/data

$ mkdir /mydata/mysql/conf

创建my.cnf配置文件

$ touch /mydata/mysql/conf/my.cnf

my.cnf添加如下内容

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

启动命令

$ docker run \
--restart=always \
--privileged=true \
-p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /mydata/mysql/conf/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=guli20200616 \
-d mysql:8.0

参数说明

​ --restart=always: 当Docker 重启时,容器会自动启动。

​ --privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限

​ -p 3306:3306:将容器的3306端口映射到主机的3306端口

​ -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机

​ -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机

​ -v /mydata/mysql/data:/var/lib/mysql:将配置文件夹挂载到主机

​ -v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf:映射配置文件

​ -v /mydata/mysql/conf/conf.d:/etc/mysql/conf.d:映射配置文件

​ -e MYSQL_ROOT_PASSWORD=guli20200616:初始化root用户的密码

​ -d mysql:8.0 以后台方式启动

解决问题:
windows下:修改my.ini 在[mysqld]内加入secure_file_priv=/var/lib/mysql
linux下:修改my.cnf 在[mysqld]内加入secure_file_priv=/var/lib/mysql

docker 安装完mysql 8, 无法远程访问的问题

  1. 先检查自己服务器是否存在安全组或者防火墙限制导致无法访问
  2. 查看docker启动mysql容器的时候是否绑定了端口
  3. 查看mysql用户是否具有访问权限权限
$ docker exec -it 你的容器名称 bash

​ 进入控制台后 mysql -uroot -p 然后输入你的root密码进入mysql;

mysql>use mysql;
mysql>select user,host from user;

​ 查看自己的root的host是否是 % , 默认只有localhost 也就是只能本机访问, 如果没有则创建一条

mysql>create user 'root'@'%' IDENTIFIED BY 'guli20200616';

​ 4. 这时候您可能还会报错如下, 就修改密码模式, 因为mysql 8.0 之后默认都是使用caching_sha2_password。这里的123456是密码 建议复杂一点

 mysql>ALTER USER'root'@'%' IDENTIFIED WITH mysql_native_password BY 'guli20200616'; 

如果帮到你,想请我喝杯咖啡,扫一扫下面二维码!哈哈哈!
在这里插入图片描述

<think>好的,我现在需要帮助用户在CentOS 7上通过Docker安装MySQL 8.0。让我先理清楚已有的信息和用户的请求。用户提供了几个引用,都是关于在CentOS 7上使用Docker安装MySQL 8.0的不同步骤。我需要整合这些信息,并生成一个结构清晰的步骤说明。 首先,我需要确认用户的需求:安装Docker,然后使用Docker安装MySQL 8.0。可能还需要配置远程访问和解决常见问题,比如防火墙设置或权限问题。 接下来,我需要查看用户提供的引用内容。引用1到5都是关于这个主题的不同教程,可能步骤略有不同,但核心步骤应该包括安装Docker、拉取MySQL镜像、创建容器、配置挂载卷、设置密码、处理远程连接等。 我需要将这些步骤整合成一个连贯的流程。可能的结构是: 1. 安装Docker 2. 配置Docker(镜像源、启动服务) 3. 拉取MySQL 8.0镜像 4. 创建并运行容器,包括端口映射、卷挂载、环境变量设置 5. 配置MySQL远程访问(创建用户、授权) 6. 处理防火墙和SELinux问题 7. 测试连接 同时,需要注意用户可能遇到的常见问题,比如权限问题、配置文件挂载、远程连接失败等,需要在步骤中提前说明解决方法。 现在要检查每个引用的内容,看看是否有不同的步骤或者需要注意的地方。例如,引用2中提到关闭防火墙,而其他引用可能没有提到这一点。CentOS 7默认使用firewalld,可能需要开放3306端口或者关闭防火墙。此外,引用4和5提到了挂载卷和特权模式,这有助于数据持久化和权限处理。 另外,有些引用提到创建my.cnf文件来配置MySQL,比如引用2中的步骤4,而其他引用可能没有这一步。是否需要自定义配置取决于用户的需求,可能作为可选步骤。 然后,生成相关问题,需要围绕安装过程中可能遇到的进一步问题,例如性能优化、容器数据管理、备份恢复等。 最后,确保回答符合用户的要求:结构清晰,步骤详细,正确引用提供的资料,并且使用中文。同时,数学公式或代码部分需要正确使用LaTeX或代码块格式。 现在开始组织回答的结构: 1. 安装Docker:检查是否安装安装必要工具,设置镜像源,安装启动Docker。 2. 下载MySQL 8.0镜像:使用docker pull命令。 3. 创建并运行容器:使用docker run命令,指定端口、卷挂载、环境变量等。 4. 配置远程访问:进入容器,登录MySQL,创建用户,授权,刷新权限。 5. 防火墙配置:开放端口或关闭防火墙。 6. 测试连接:使用客户端工具测试远程连接。 需要注意的细节包括: - 数据持久化通过挂载卷,如-v /host/path:/var/lib/mysql。 - 使用--privileged=true来提升权限,避免权限问题。 - 设置MYSQL_ROOT_PASSWORD环境变量。 - 处理MySQL 8.0的认证插件问题,可能需要修改用户密码的加密方式。 现在根据引用内容,引用2提到了创建挂载目录和my.cnf文件,但其他引用可能没有,这可能是一个可选步骤。如果用户需要自定义配置,可以添加此步骤,但为了简化流程,可能先忽略,除非必要。 在引用3中,运行命令是直接运行容器,而引用4和5则更详细。需要确保命令参数正确,比如端口映射、环境变量等。 在回答中,需要引用提供的引用,比如在安装Docker的步骤中,引用2的步骤1-7;在运行容器时,参考引用3、4、5中的不同命令,综合成一个通用的命令。 可能的问题点包括: - Docker镜像的来源不同,有些是官方镜像,有些是阿里云的镜像。用户可能更倾向于使用官方镜像,所以应推荐使用docker pull mysql:8.0。 - 挂载卷的位置需要用户自定义,比如创建本地目录如/mysql/data和/mysql/config,并挂载到容器内的对应路径。 - 设置root密码通过环境变量MYSQL_ROOT_PASSWORD。 此外,远程连接问题可能需要修改用户的认证插件,比如在MySQL 8.0中默认使用caching_sha2_password,而旧客户端可能不支持,需要更改为mysql_native_password。或者在创建用户时指定插件。 步骤完成后,需要测试远程连接,可能需要关闭CentOS的防火墙或者开放3306端口,如: sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload 或者禁用防火墙: systemctl stop firewalld systemctl disable firewalld 但建议保持防火墙开启并开放端口更安全。 最后,相关问题部分可以包括Docker常用命令、数据备份、性能优化、容器网络配置等。</think>### 在CentOS 7上通过Docker安装MySQL 8.0的步骤 #### 1. **安装Docker** - **检查Docker是否已安装** 运行命令 `docker --version`,若未安装则进行后续步骤[^2]。 - **关闭防火墙(可选)** 避免端口冲突: ```bash systemctl stop firewalld systemctl disable firewalld ``` - **安装依赖工具** ```bash yum install -y yum-utils ``` - **配置Docker镜像源(国内加速)** ```bash yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ``` - **安装启动Docker** ```bash yum install -y docker-ce docker-ce-cli containerd.io systemctl start docker systemctl enable docker ``` --- #### 2. **拉取MySQL 8.0镜像** - 从Docker仓库拉取官方镜像: ```bash docker pull mysql:8.0 ``` 验证镜像: ```bash docker images ``` --- #### 3. **创建并运行MySQL容器** 通过以下命令启动容器: ```bash docker run -d \ --name mysql8.0 \ -p 3306:3306 \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=your_password \ --privileged=true \ mysql:8.0 ``` - **参数说明** - `-p 3306:3306`: 将宿主机的3306端口映射到容器。 - `-v`: 挂载数据卷(需提前创建宿主目录如`/mydata/mysql`)[^4]。 - `--privileged=true`: 解决权限问题。 - `-e MYSQL_ROOT_PASSWORD`: 设置root用户密码[^3]。 --- #### 4. **配置远程访问** 1. **进入容器** ```bash docker exec -it mysql8.0 /bin/bash ``` 2. **登录MySQL** ```bash mysql -u root -p ``` 3. **创建远程用户并授权** ```sql CREATE USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'user_password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; FLUSH PRIVILEGES; ``` **说明**:使用`mysql_native_password`插件避免客户端兼容性问题[^5]。 --- #### 5. **开放防火墙端口(若未关闭)** ```bash firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload ``` --- #### 6. **测试远程连接** 使用工具(如Navicat或MySQL Workbench)连接: - **主机**: CentOS服务器的IP地址 - **端口**: 3306 - **用户**: `remote_user` - **密码**: `user_password` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值