手把手教你在CentOS7.9上使用docker 安装MySQL5.7

前言

大家好,又见面了,我是沐风晓月,本文主要讲解如何用docker在centos7.9系统上安装MySQL5.7,以及如何设置MySQL的远程登录。

文章收录到【容器管理】和【数据库入门到精通专栏】,此专栏是沐风晓月对linux云计算架构实战方向的内容进行的总结,希望对你有用。
在这里插入图片描述

实验环境

  • 查看操作系统
[root@mufeng41 ~]# cat /etc/redhat-release 
CentOS Linux release 7.9 (Core) 
  • 查看IP

[root@mufeng41 ~]# ifconfig |grep inet |awk 'NR==1{print $2}'
192.168.1.41
[root@mufeng41 ~]# ifconfig |grep inet|sed -n '1p'  |awk '{print $2}'
192.168.1.41
[root@mufeng41 ~]# 

一. docker的安装

1.1 从阿里下载repo镜像

[root@mufenggrow ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

这条命令下载完成后,会把repo包放在/etc/yum.repos.d/下

在这里插入图片描述

使用命令可以查看到我们的repo包,如果没有,说明没有下载成功:

在这里插入图片描述

1.2 安装docker

[root@mufenggrow ~]# yum install docker-ce -y   
## 使用yum安装

安装速度可能稍慢,这时候只需要耐心等待完成即可

1.3 启动docker并查看版本

启动docker

[root@mufenggrow ~]# systemctl  start docker

查看版本

[root@mufeng41 yum.repos.d]#  docker --version
Docker version 24.0.2, build cb74dfc

[root@mufeng41 yum.repos.d]# docker version
Client: Docker Engine - Community
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:55:21 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.2
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.4
  Git commit:       659604f
  Built:            Thu May 25 21:54:24 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
[root@mufeng41 yum.repos.d]# 


1.4 设置加速

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

二. 安装mysql5.7

2.1 查看可用mysql镜像

[root@mufeng41 ~]# docker search mysql
NAME                            DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   14230     [OK]       
mariadb                         MariaDB Server is a high performing open sou…   5438      [OK]       
percona                         Percona Server is a fork of the MySQL relati…   615       [OK]       
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   824       [OK]       
bitnami/mysql                   Bitnami MySQL Docker Image                       89                   [OK]
circleci/mysql                  MySQL is a widely used, open-source relation…   29                   

  • NAME:镜像的名称或标签。
  • DESCRIPTION:对镜像的描述。
  • STARS:镜像的星级评分,表示用户对该镜像的关注程度。
  • OFFICIAL:是否官方镜像,“[OK]” 表示是官方镜像。 AUTOMATED:是否自动构建的镜像

2.2 下载mysql5.7

[root@mufeng41 ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete 
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
0ceb82207cd7: Pull complete 
37f2405cae96: Pull complete 
e2482e017e53: Pull complete 
70deed891d42: Pull complete 
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@mufeng41 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mysql        5.7       c20987f18b13   18 months ago   448MB

2.3 创建实例并启动

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

参数说明:

  • -p 3306:3306 将容器的3306端口映射到主机的3306端口
  • -v /mydata/mysql/log:/var/log/mysql \ 将日志文件挂载到主机
  • -v /mydata/mysql/data:/var/lib/mysql \ 将配置文件挂载到主机
  • -v/mydata/mysql/conf:/etc/mysql \ 将配置文件挂载到主机
  • -e MYSQL_ROOT_PASSWORD=root \ 设置mysql的密码

2.4 查看并测试

[root@mufeng41 ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED              STATUS              PORTS                                                  NAMES
49f85506f9ea   mysql:5.7   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

[root@mufeng41 ~]# docker exec -it mysql /bin/bash

root@49f85506f9ea:/# mysql -proot



mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> 

2.5 修改mysql的字符编码

[root@mufeng41 ~]# vim /mydata/mysql/conf/my.cnf
[root@mufeng41 ~]# cat !$
cat /mydata/mysql/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

这些配置项的含义如下:

  • [client] 和 [mysql] 部分指定了客户端的默认字符集为 utf8,确保 MySQL 客户端连接时使用 UTF-8 字符集。

[mysqld] 部分包含了 MySQL 服务器的配置项:

  • init_connect 配置项设置了连接建立时要执行的初始 SQL 语句。这里通过两个参数分别设置了连接的字符集和名称为 utf8。
  • character-set-server 配置项定义了服务器默认字符集为 utf8。
  • collation-server 配置项定义了服务器默认排序规则为 utf8_unicode_ci,即对于 Unicode 字符集使用的排序规则。
  • skip-character-set-client-handshake 配置项用于跳过 MySQL 客户端的字符集验证。
  • skip-name-resolve 配置项用于禁用反向 DNS 查找,可以提高连接速度。
    这些配置项通常用于确保 MySQL 在连接、存储和处理数据时使用适当的字符集和排序规则。

重启生效

[root@mufeng41 ~]# docker restart mysql
mysql
# 设置启动docker的时候就运行mysql
[root@mufeng41 ~]# docker update mysql --restart=always
mysql

2.6 远程登录数据库

[root@mufeng41 ~]# mysql -uroot -proot -h 192.168.1.41

三. python连接mysql案例

3.1 查看版本

import pymysql
#创建connection对象为db
db = pymysql.connect(host="192.168.1.41",port=3306,user="root",passwd="root",db="mysql",charset='utf8')
#创建cursor游标,获取python版本信息
cursor = db.cursor()
#获取mysql版本信息
cursor.execute("select version()")
#将上面的版本结果存放到data中
data = cursor.fetchone()
print(f"版本信息为{data}")
#关闭数据库连接
db.close()

3.2 创建数据库

import pymysql
#创建connection对象为db
db = pymysql.connect(host="192.168.1.41",port=3306,user="root",passwd="root",charset='utf8')

#创建cursor游标
cursor = db.cursor()
#创建数据库
database_name = "aa"


cursor.execute(f"SHOW DATABASES LIKE '{database_name}';")
result = cursor.fetchone()

if result is None:
    # 数据库不存在,创建数据库
    cursor.execute(f"CREATE DATABASE {database_name}")
    print(f"数据库 {database_name} 创建成功")
else:
    print(f"数据库 {database_name} 已存在,无需创建")


#将上面的版本结果存放到data中
# 执行查询数据库的操作
cursor.execute("SHOW DATABASES;")

#fetchone表示返回一行

#data = cursor.fetchone()
# fetchall 表示返回所有数据
#data = cursor.fetchall()
#print(f"执行结果:{data}


data = cursor.fetchall()
print("执行结果:")
for row in data:
    print(row[0])


#关闭数据库连接
db.close()

在这里插入图片描述

总结

以上就是关于centos7.9中使用docker安装mysql5.7的所有内容,有问题记得留言。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wisdom_futrue/article/details/131239122