数据库基础及Mysql的安装

数据库基础

什么是数据库?
数据库是指长期存储在计算机内有组织可共享的数据集合。数据库总的数据按照一定的数据模型组织、描述和存
贮,具有较小的冗余度、较高的数据独立性和易扩展性,并在一定范围内可以被多个用户所共享。

  • 层次模型
  • 网状模型
  • 关系模型

关系型数据库是建立在关系数据模型基础上的数据库,借助集合代数概念和方法处理数据库中的数据,同时也是一个被组织成拥有正式描述性的表格。该形式的表格实质是装载数据项的收集体,这些表格中的数据能以不同的方式被存取或重新召集而不需要更新组织数据库表格。主流RDBMS有Oracle、DB2、SQL Server、Sybase、MySQL等。

什么是DBMS?
数 据 库 管 理 系 统Database Management System,简称DBMS是位于用户与操作系统之间的一层数据管理软件。
DBMS的用途:科学地组织和存储数据、高效地获取和维护数据。

数据库特点

  • 数据尽可能不重复,以最优方式为多种应用服务
  • 数据结构独立于应用
  • 对数据的CRUD由统一软件进行管理和控制

数据模型

在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟
数据模型分成两个不同的层次

  • 概念模型也称信息模型,它是按用户的观点来对数据和信息建模,可以使用ER图进行描述
    在这里插入图片描述

  • 关系模式是最重要的一种数据模型。也是目前主要的数据模型采用

  • RDBMS系统是在E.F.Codd博士发表的论文《大规模共享数据银行的关系型模型》(Communications of theACM杂志1970年6月刊)基础上设计出来的

  • 它通过数据、关系和对数据的约束三者组成的数据模型来存放和管理数据。三十多年来,RDBMS获得了长足的发展,目前许多企业的在线交易处理系统、内部财务系统、客户管理系统等大多采用了RDBMS。字节级关系型数据库在大型企业集团中已是司空见惯

  • 目前业界普遍使用的关系型数据库管理系统产品有IBM DB2通用数据库、Oracle、My SQL以及SQL Server等
    RDBMS的特点

  • 数据以表格的形式出现 -表在数学中被表示为关系

    扫描二维码关注公众号,回复: 13123282 查看本文章
  • 每行为各种记录名称

  • 每列为记录名称所对应的数据域

  • 许多的行和列组成一张表单

  • 若干的表单组成database
    在这里插入图片描述

关系模型的优缺点

建立在严格的数学概念的基础上

  • 概念单一。数据结构简单、清晰,用户易懂易用
  • 实体和各类联系都用关系来表示
  • 对数据的检索结果也是关系

关系模型的存取路径对用户透明

  • 具有更高的数据独立性,更好的安全保密性
  • 简化了程序员的工作和数据库开发建立的工作

关系模型的缺点:

  • 存取路径对用户透明导致查询效率往往不如非关系数据模型
  • 为提高性能,必须对用户的查询请求进行优化。增加了开发数据库管理系统的难度

常见的数据产品

在这里插入图片描述

  • Oracle:运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域
  • DB2:速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域
  • SQL Server:全面,效率高,界面友好,操作容易,但是不跨平台[2019支持windows、Linux和Docker]。适用于于中小型企业领域
    MySQL:开源,体积小,速度快。适用于于中小型企业领域

SQL

SQL结构化查询语言是一种数据库操作的非过程化编程语言,用于存取数据以及查询、更新和管理关系型数据系统,一般数据库脚本文件的扩展名也是.sql。
允许用户在高层数据结构上工作,不要求用户了解数据的存放方式,对于不同底层结构的数据库系统使用相同的数据输入与管理的接口

  • 1986年10月美国国家标准化协会ANSI首先对SQL进行规范化,1987年国际标准化组织ISO定义了国际标准。

但是各种数据库系统都对SQL规范进行了某些编改和扩充,所以不同数据库系统的SQL不能完全相互通用。一个SQL类型的数据库对于使用者是便于理解和组织结构的,通过数据元与数据元之间的关系可以整理出对系统的数据处理逻辑,并且可以进行人为精简数据,达到最优或者较优解。

SQL的特点

  • 综合统一、高度非过程化
  • 面向集合的操作方式
  • 以同一种语法结构提供两种使用方法;即可以直接以命令方式交互使用;也可以嵌入主语言中使用
  • 语言简洁,易学易用;在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语

NoSQL

NoSQL泛指非关系型数据库。主要是针对超大规模和高并发的SNS类型动态网站的解决方案(Web2.0)。
常见的NoSQL数据库类型有4种:

  • key-value数据库。使用hash表存储数据,例如Redis。简单易部署,但是对部分值进行查询或更新时效率低下
  • 列存储数据库,用于应对分布式存储的海量数据,键仍旧存在,只是指向了多个列,例如HBase
  • 文档型数据库,该类型的数据模型是版本化的文档,半结构化的文档以JSON格式存储,例如MongoDB
  • 图形数据库,主要用户关系计算Neo4j

NoSQL的适用场景:

  • 数据模型比较简单
  • 需要灵活性很强的IT系统
  • 对数据库性能要求较高
  • 不需要数据高度的一致性
  • 对于给定的key比较容易映射复杂值的环境

Mysql数据库应用

MySQL的官方网站引述MySQL是“世界上最受欢迎的开放源代码数据库”。这不是狂妄之语,数字可以证明它目前有超过1000万份的MySQL被安装用于支付高负荷的网站和其他关键商业应用,包括像阿尔卡特、爱立信、朗讯、亚马逊、Google、纽约证券交易所、迪斯尼、Yahoo、美国宇航局等这样的产业领袖。有些用户将MySQL用于含60000个表和约50亿行的数据库。每个表可支持高达64条索引。每条索引可由1~16个列或列元素组成。最大索引宽度为1000字节。索引可使用具备CHAR、VARCHAR、BLOB或TEXT列类型的列前缀。所有数据均以所选的字符集保存。正常字符串列的比较不区分大小写。MySQL数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由MySQL内部限制决定的

InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB

MySQL 8的新特性
MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面带来了更好的性能:读/写工作负载、IO密集型工作负载、以及高竞争("hot spot"热点竞争问题)工作负载。从 MySQL 8 开始,使用 utf8mb4 作为 MySQL 的默认字符集

InnoDB 现在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以实现事务完整性了,要么失败回滚,要么成功提交InnoDB 集群为您的数据库提供集成的原生 HA 解决方案

MySQL的安装

Windows下MySQL的安装

从Oracle公司的官方网站上,可以下载到MySql的安装版本和解压缩版本。

  • https://dev.mysql.com/downloads/mysql/

MySql本来是完全免费的产品,被Oracle收购以后,Oracle将MySql修改成了三个不同的版本为:

  • MySql Enterprice Edition 企业版 - 收费或试用
  • MySql Community Edition 社区版本 - 免费
  • MySql Classic Edition 经典版本-免费

MySQL的基本安装命令

  1. 初始化命令mysqld --initialize --console
  2. mysqld -install进行服务的添加
  3. net start mysql启动服务
  4. mysql -u root -p进行登录数据库,这时提示需要密码,然后就是用你上面的密码登录
  5. 修改密码语句:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;6. 停止服务:net stop mysql
  6. 卸载服务:mysqld --remove
mysqld]
# 设置3306端口
port=3306
# 自定义设置mysql的安装目录,即解压mysql压缩包的目录
basedir=E:\MySQL\mysql-8.0.15-winx64
# 自定义设置mysql数据库的数据存放目录
datadir=E:\MySQL\mysqlDate
# 允许最大连接数
max_connections=200
# 允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口和默认字符集
port=3306
default-character-set=utf8

CentOS7安装mysql

1、清理原有的mysql数据库

  • 使用命令查找出安装的mysql软件包和依赖包:rpm -pa | grep mysql
  • 使用命令依次删除上面的程序 yum remove mysql-xxx-xxx
  • 删除mysql的配置文件,卸载不会自动删除配置文件,首先使用命令查找出所用- 的配置文件find / -namemysql
  • 根据需求使用命令依次对配置文件进行删除rm -rf /var/lib/mysql

2、删除MariaDB的文件
由于MySQL在CentOS7中收费了,所以已经不支持MySQL了,取而代之在CentOS7内部集成了mariadb,而安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB

  • 使用rpm命令查找出要删除的mariadb文件rpm -pa | grep mariadb
  • 删除程序rpm -e mariadb-libs
  • 如果有报错则可以使用强制删除:rpm -e --nodeps mariadb-libs。至此就将原来有的mysql 和mariadb数据库删除了

3、安装MySQL

  • centos的yum源中默认是没有mysql的,所以需要先去官网下载mysql的repo源并安装,下载地址https://dev.mysql.com/downloads/repo/yum/

  • 将刚下好的mysql文件上传到/usr/local/mysql文件夹下mysql80-community-release-el7-1.noarch.rpm

  • 安装 yum repo文件并更新yum缓存:rpm -ivh mysql80-community-release-el7-1.noarch.rpm。执行结果会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo

  • 使用 yum安装mysql。当在使用yum安装mysql时,yum默认会从yum仓库中安装mysql最新的GA版本

    • 查看mysql yum仓库中mysql版本,使用命令yum repolist all | grep mysql
    • 使用 yum-config-manager 命令修改相应的版本为启用状态最新版本为禁用状态
    • yum-config-manager --disable mysql80-community
    • yum-config-manager --enable mysql57-community
    • 或可以编辑 mysql repo文件cat /etc/yum.repos.d/mysql-community.repo将相应版本下的enabled改成 1 即可
  • 安装mysql命令:yum install mysql-community-server

  • 开启mysql服务:systemctl start mysqld

  • 获取初始密码登录mysql

  • mysql在安装后会创建一个root@locahost账户,并且把初始的密码放了/var/log/mysqld.log文件中; cat/var/log/mysqld.log | grep password

下载安装mysql-8.0.13-linux-glibc2.12-i686.tar

  • tar -xvf mysql-8.0.13-linux-glibc2.12-i686.tar
    如果报错则yum install xz
    tar -xvf mysql-8.0.13-linux-glibc2.12-i686.tar.xz
  • groupadd mysql
  • useradd -r -g mysql mysqlcd /usr/local/mysql/
  • chown -R mysql:mysql ./
  • bin/mysqld --initialize --user=mysql --basedir=/usradir=/usr/local/mysql/data/
    如果报错则yum -y install numactl
  • chown -R mysql:mysql data
  • vim /etc/profile
  • source /etc/profile

4、在防火墙中开启3306端口
CentOS7默认使用的是firewall作为防火墙,现在改为习惯常用的iptables防火墙

  • 关闭firewall防火墙
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    systemctl mask firewalld.service
  • 安装iptables防火墙
    yum install iptables-services -y
  • 启动iptable防火墙
    systemctl enable iptables
    systemctl start iptables
  • 编辑防火墙增加端口 防火墙文件位置为/etc/sysconfig/iptables
    vim /etc/sysconfig/iptables在倒数第三行上增加
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
  • 重启防火墙
    systemctl enable iptables.service
    systemctl start iptables.service

5、将mysql 服务加入开机启动项并启动进程

  • systemctl enable mysqld.service
  • systemctl start mysqld.service

猜你喜欢

转载自blog.csdn.net/Lecheng_/article/details/115098917