1.mysql数据库基本体系结构

MySQL是一个小型关系数据库管理系统 (数据库分为关系型和非关系型 mysql属于关系型数据库)

Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。

Connectors指的是不同语言中与SQL的交互。

Management Serveices & Utilities: 系统管理和控制工具。

Connection Pool:连接池。管理缓冲用户连接,线程处理等需要缓存的需求。

SQL Interface:SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调 用SQL Interface。

Parser: 解析器。SQL命令传递到解析器的时候会被解析器验证和解析。

Optimizer:查询优化器。SQL语句在查询之前会使用查询优化器对查询进行优化。

Cache和Buffer: 查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数 据。

Engine:存储引擎。存储引擎是MySql中具体的与文件打交道的子系统。

(sql接口 解析器 查询优化 查询缓存)


Mysql安装类型选择什么 mysql安装包括哪些主要部件?_sql

 

 Connection Pool  连接层:  像一个缓冲池,预先放入连接,当需要数据库时,直接取出使用,使用完放回

Mysql安装类型选择什么 mysql安装包括哪些主要部件?_docker_02

 这5部分统称为sql层:

Engine 称为插件式存储引擎层存储引擎。存储引擎是MySql中具体的与文件打交道的子系统。

最后一层为物理文件层:各种文件

 2.mysql的四种安装方式

2.1 仓库安装

[root@192 ~]# rpm -ivh  https://repo.mysql.com//mysql80-community-release-el9-1.noarch.rpm
[root@192 ~]# dnf install mysql-server -y
[root@l92 ~]# systemctl start mysqld
[root@192 ~]# systemctl status mysqld
[root@192 ~]# grep 'temporary password' /var/log/mysqld.log   查看当前mysql密码
[root@192 ~]# mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin123!';
修改密码 登录之后必须先修改用户密码,默认密码策略要求密码至少包含一个大写字母、一个小写字母、一位数字和一个特殊字符,并且密码总长度至少为8个字符。
mysql> show databases;  展示当前数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

卸载数据库

卸载数据库
[root@192 ~]# dnf remove mysql-server -y
[root@192 ~]# dnf remove  mysql80-community-release -y
[root@192 ~]# rpm -qa | grep mysql
[root@192 ~]# rm -rf /var/lib/mysql/  /var/log/mysqld.log

 2.2 本地安装

[root@192 ~]# wget  https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.32-1.el9.x86_64.rpm-bundle.tar
[root@192 ~]# tar xvf mysql-8.0.32-1.el9.x86_64.rpm-bundle.tar
[root@192 ~]# dnf localinstall  mysql-community-server-8.0.32-1.el9.x86_64.rpm \
> mysql-community-client-8.0.32-1.el9.x86_64.rpm \
> mysql-community-common-8.0.32-1.el9.x86_64.rpm \
> mysql-community-icu-data-files-8.0.32-1.el9.x86_64.rpm \
> mysql-community-client-plugins-8.0.32-1.el9.x86_64.rpm \
> mysql-community-libs-8.0.32-1.el9.x86_64.rpm
[root@192 ~]# systemctl start mysqld
[root@192 ~]# systemctl status mysqld
[root@192 ~]# grep 'temporary password' /var/log/mysqld.log

[root@192 ~]# mysql -uroot -p
Enter password: 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin123!';
mysql> show databases;
mysql> exit

 2.3 容器安装

[root@localhost ~]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

[root@localhost ~]# dnf install -y yum-utils device-mapper-persistent-data lvm2

[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
[root@localhost ~]# dnf install docker-ce --allowerasing -y
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
[root@localhost ~]# docker version
[root@localhost ~]# docker run hello-world
[root@localhost ~]# docker run --name mysqltest -e MYSQL_ROOT_PASSWORD=123456 -d mysql
[root@localhost ~]# docker ps
[root@localhost ~]# docker exec -it mysqltest /bin/bash
bash-4.4# mysql -uroot -p  
Enter password: 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> exit
Bye
bash-4.4# exit
exit

 2.4 源代码安装

[root@localhost ~]# wget  https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.32.tar.gz

#添加用户和组
[root@localhost ~]# groupadd mysql
useradd -r  是新增系统用户  -g 指定mysql组  -s /bin/false  什么也不做只是返回一个错误状态,然后立即退出。将用户的shell设置为/bin/false,用户会无法登录,并且不会有任何提示
[root@localhost ~]# useradd -r -g mysql -s /bin/false mysql
#开始源码安装
[root@localhost ~]# tar xvf mysql-boost-8.0.32.tar.gz
[root@localhost mysql-8.0.32]# yum install gcc gcc-c++ cmake -y
安装编译器
[root@localhost ~]# yum install   cmake gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils openssl-devel ncurses-devel libtirpc rpcgen git  -y
安装编译过程需要的工具
[root@localhost ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/centos-stream/9-stream/CRB/x86_64/os/Packages/libtirpc-devel-1.3.3-0.el9.x86_64.rpm
安装低版本
[root@localhost ~]# cd mysql-8.0.32/
[root@localhost mysql-8.0.32]# mkdir bld
新建一个目录存放编译
[root@localhost mysql-8.0.32]# cd bld
[root@localhost bld]# cmake .. -DWITH_BOOST=../boost/boost_1_77_0/
[root@localhost bld]# make    ########该过程很久,请耐心等待
[root@localhost bld]# make install
[root@localhost mysql]# cd /usr/local/mysql
[root@localhost mysql]# mkdir mysql-files
[root@localhost mysql]# chown mysql:mysql mysql-files
[root@localhost mysql]# chmod 750 mysql-files
[root@localhost mysql]# bin/mysqld --initialize --user=mysql
[root@localhost mysql]# bin/mysql_ssl_rsa_setup
[root@localhost mysql]# bin/mysqld_safe --user=mysql &
[root@localhost mysql]# grep 'temporary password' /var/log/mysqld.log
[root@localhost mysql]# ./bin/mysql -uroot -p
Enter password: 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin123!';
mysql> show databases;
mysql> exit

#停止mysql服务
[root@localhost mysql]# ./bin/mysqladmin -uroot -pAdmin123! shutdown

# Next command is optional
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql.server
[root@localhost mysql]# systemctl daemon-reload
[root@localhost mysql]# systemctl start mysql