Mysql数据库初识与安装

目录

前言

一、数据库的基本概念

1、数据(data)

2、表(table)

3、数据库(Database)

4、数据库管理系统(DBMS)

  5、数据库系统(DBS)

二、数据库的发展史

         1、第一代数据库

2、第二代数据库

3、第三代数据库

三、主流数据库介绍

1、SQL Server(微软公司产品)

2、Oracle(甲骨文公司产品)

3、DB2(IBM公司产品)

4、MySQL(甲骨文公司收购)

5、PostgreSQL(PostgreSQL Global Development Group维护)

6、GaussDB(华为公司产品)

7、OceanBase(蚂蚁集团产品)

四、数据库类型

1、关系型数据库

实体

属性

联系

二维数据表

 主键

关系数据库应用

2、非关系数据库介绍

优点

与关系型数据库对比

五、MySQL数据库

1、简介

2、版本介绍

3、产品阵营

4、MySQL特点

六、安装MySQL

​编辑安装依赖库

 ​编辑

配置软件模块

 编译与安装 

 创建Mysql用户

修改配置文件

​编辑更改安装目录和配置文件的属主属组

设置环境变量

数据初始化

添加mysqld系统服务

修改登录密码

授权远程登陆

一键安装脚本


前言

数据库管理系统是一个由互相关联的数据的集合和一组用访问这些数据的程序组成,这个数据集合通常称作数据库,其中包含了关于某个企业的信息。DBMS的主要目标就是提供一种可以方便高效的存取数据库信息的途径。

一、数据库的基本概念

1、数据(data)

  • 描述事物的符号记录
  • 包括数字,文字、图形、图像、声音、档案记录等
  • 如下表所示:每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性

2、表(table)

  • 将不同的记录组织在一起用来存储具体数据

3、数据库(Database)

  • 表的集合,是存储数据的仓库
  • 以一定的组织方式存储的相互有关的数据集合

4、数据库管理系统(DBMS)

数据库管理系统(DatabaseManagementSystem,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作,具体工作模式如下: 

Mysql数据库初识与安装_第1张图片

  1. 接受应用程序的数据请求和处理请求
  2. 将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
  3. 实现对数据库的操作
  4. 从数据库的操作中接受查询结果
  5. 对查询结果进行处理(格式转换)
  6. 将处理结果返回给用户

DBMS功能:

  • 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能
  • 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出
  • 数据操纵功能:包括数据查询统计和数据更新两个方面
  • 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能
  • 通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行数据交换

  5、数据库系统(DBS)

  • 是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
  • 用户可以通过 DBMS 或应用程序操作数据库

二、数据库的发展史

1、第一代数据库

  • 自20世纪60年代起,第一代数据库IMS系统问世
  • 是层次模型与网状模型的数据库系统
  • 为同意管理和共享数据提供了有利的支撑

2、第二代数据库

  • 20世纪70年代初,第二代数据库——关系数据库开始出现
  • 20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流
  • 到目前为止,关系数据库系统仍占领数据库应用的主要地位

3、第三代数据库

  • 自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现
  • 面向对象的数据库系统,实用性强、适应面广
  • 20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面
  • 一些新的元素被添加进主流数据库系统中。例如,Oracle 支持的 < 关系 - 对象 > 数据库模型

数据库的三个阶段:人工管理阶段、文件管理系统、数据库系统阶段

三、主流数据库介绍

1、SQL Server(微软公司产品)

  • 面向Windows操作系统
  • 简单易用

2、Oracle(甲骨文公司产品)

  • 面向多有主流平台
  • 安全、完善、操作复杂

3、DB2(IBM公司产品)

  • 面向所有主流平台
  • 大型、开源、体积小

4、MySQL(甲骨文公司收购)

  • 免费、开源、体积小

5、PostgreSQL(PostgreSQL Global Development Group维护)

  • 面向所有主流平台
  • 免费、开源、功能强大

6、GaussDB(华为公司产品)

  • 涵盖关系型、非关系型数据库服务
  • 可靠性、扩展性、备份恢复

7、OceanBase(蚂蚁集团产品)

  • 金融级分布式关系数据库
  • 数据强一致、高可用、高性能、在线扩展、高度兼容 SQL 标准和主流关系数据库、低成本

四、数据库类型

1、关系型数据库

  • 关系型数据库是基于关系模型的数据库系统

  • 关系模型的数据结构使用简单易懂的二维数据表

  • 关系模型可用简单的 “实体 - 关系”(E - R) 图来表示

  • E - R 图中包含了实体(数据对象)、关系和属性三个要素(所有实体及实体之间联系的集合构成了一个关系数据库)

Mysql数据库初识与安装_第2张图片

实体

  • 也称为实例,对应现实世界中可区别于其他对象的 “事件” 或 “事务”
  • 如上图的银行客户、银行账户

属性

  • 实体所具有的某一特性,一个实体可以有多个属性
  • 如上图的 “银行客户” 实体集中的每个实体均具有姓名、住址、电话等属性

联系

  • 实体集之间的对应关系称为联系,也称为关系
  • 如银行客户和银行账户之间存在 “储蓄” 的关系

二维数据表

  • 每一行称为一条记录,用来描述一个对象的信息
  • 每一列称为一个字段,用来描述对象的一个属性

Mysql数据库初识与安装_第3张图片

 主键

  • 数据表中的每行记录都必须是唯一的,不允许出现完全相同的记录,通过定义主键(主关键字,Promary Key)可以保证记录(实体)的唯一性
  • 键,即关键字,它是关系模型中一个非常重要的元素
  • 主键唯一标识表中的行数据,一个主键值对应一行数据,主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)
  • 一个表只能有一个主键
  • 如果一个属性集能唯一地标识表的一行而又不含有多余的属性,那么这个属性集称为候选键
  • 表中可以有多个候选键,但是只能有一个候选键可以选做表的主键,所有其他候选键称为备用键
  • 例如下图,“编号”、“姓名”、“性别”、“年龄”、“专业编号” 都可以说是候选键,而可以定义 “编号” 为主键
     
编号 姓名 性别 年龄 专业编号
1 张三 21 1
2 李四 22 3
3 王五 31 4
4 陈六 25 5

关系数据库应用

关系型数据库 应用举例
Oracle, MySQL 12306用户信息系统
SQLServer、Sybase 淘宝账号系统
lnformix、access 联通手机号信息系统
DB2、FoxPRO 银行用户账号系统
PostgreSQL 网站用户信息系统
  • 一个关系数据库通常包括多个表,通过外键(Foreign Key)可以使这些表关联起来
  • 外键是用于建立和加强两个表数据之间的链接的一列或多列,通过表中主键值得一列或多列添加到另一个表中,可创建两个表之间的链接,这个列就称为第二个表的外键
  • 如下表所示,字段 “专业编号” 是该表的主键,而上表中也有一个相同的字段 “专业编号”,则该字段称为外键
编号 学科
1 JAVA
2 Web
3 Linux
4 Data

  • 主键的表称之为 “主表”,外键的表称之为 "从表”
  • 主表和从表总是成对出现的,相互之间以 “外键” 形成关联
     

2、非关系数据库介绍

  • 非关系数据库也被称作NoSQL (Not Only SQL)
  • 存储数据不以关系模型为依据,不需要固定的表格式
  • 常用的非关系型数据库有Redis、MongoDB

优点

  1. 数据库可高并发读写
  2. 对海量数据高效率存储与访问
  3. 数据库具有高扩展性与高可用性

与关系型数据库对比

优势

  1. 成本:nosql 数据库简单易部署,基本都是开源软件,不需要像使用 oracle 那样花费大量成本购买使用,相比关系型数据库价格便宜
  2. 查询速度:nosql 数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及 nosql 数据库
  3. 存储数据的格式:nosql 的存储格式是 key-value 形式、文档形式、图片形式等等,所以可以存储基础类型以及对象是集合等各种格式,而关系型数据库则只支持基础类型
  4. 扩展性:关系型数据库有类似 join 这样的多表查询机制的限制导致扩展很难

劣势

  1. 维护的工具和资料有限,因为 nosql 是属于新的技术,而关系型数据库出现已有十几年时间
  2. 不提供对 sql 语句的支持,如果不支持 sql 这样的工业标准,将产生一定程度的学习和使用成本
  3. 不提供关系型数据库对事物的处理
     

五、MySQL数据库

1、简介

  • MySQL 是一个真正的多线程、多用户的 SQL 数据库服务,凭借其高性能、高可靠和易于使用的特点,成为服务器领域中最受欢迎的开源数据库系统
  • 在 2008 年以前,MySQL 项目由 MySQL AB 公司进行开发、发布和支持,之后历经 Sun 公司收购 MySQL,Oracle 公司收购 Sun 公司的过程,目前 MySQL 项目由 Oracle 公司负责运营和维护

2、版本介绍

  • MySQL 商业版是由 MySQL AB 公司负责开发与维护,需要付费才能使用
  • MySQL 社区版是由分散在世界各地的 MySQL 开发者、爱好者一起开发与维护,可以免费使用
  • 两者区别
  1. 商业版组织管理与测试环节更加严格,会比社区版更稳定
  2. 商业版不遵守 GPL,社区版遵从 GPL 可以免费使用
  3. 商业版可获得 7*24 小时的服务,社区版则没有
     

3、产品阵营

  • 第一阵营:5.0-5.1 阵营,可说是早期产品的延续
  • 第二阵营:5.4-5.7 阵营,整合了 MySQL AB 公司、社区和第三方公司开发的存储引擎,从而提高性能
  • 第三阵营:6.0-7.1 阵营,就是 MySQL Cluster 版本,为适应新时代对数据库的集群需求而开发

4、MySQL特点

  • 性能卓越、服务稳定
  • 开源、无版权限制、成本低
  • 多线程、多用户
  • 基于 C/S 架构
  • 安全可靠

六、安装MySQL

安装包
boost_1_59_0.tar.gz  
mysql-5.7.17.tar.gz  

[root@localhost opt]# tar zxf mysql-5.7.17.tar.gz
[root@localhost opt]# tar zxf boost_1_59_0.tar.gz

安装依赖库
[root@localhost opt]# yum install -y gcc gcc-c++ ncurses* bison cmake

[root@localhost opt]# mv boost_1_59_0 /usr/local/boost

配置软件模块

[root@localhost mysql-5.7.17]# cd mysql-5.7.17/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \           #指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \     #指定mysql进程监听套接字文件(数据库连接文件)的存储路径           
-DSYSCONFDIR=/etc \                                 #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \                #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \                           #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \               #指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \                         #指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                  #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \                   #安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \                 #安装BLACKHOLE存储引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \                #安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \             #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \                     #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1                                    #生成便于systemctl管理的文件

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1

Mysql数据库初识与安装_第4张图片安装依赖库

Mysql数据库初识与安装_第5张图片

 

配置软件模块

Mysql数据库初识与安装_第6张图片

 编译与安装 

make -j2 && make install

##也可以统计CPU的核数后都用做编译mysql
make -j grep processor /proc/cpuinfo | wc -l && make install

Mysql数据库初识与安装_第7张图片

 创建Mysql用户

useradd -M -s /sbin/nolonig mysql   

修改配置文件

vim /etc/my.cnf                           #删除原配置项,再重新添加下面内容
[client]                                  #客户端设置
port = 3306
socket=/usr/local/mysql/mysql.sock      
 
[mysqld]                                  #服务全局设置
user = mysql                              #设置管理用户
basedir=/usr/local/mysql                  #指定数据库的安装目录
datadir=/usr/local/mysql/data             #指定数据库文件的存储路径
port = 3306                               #指定端口
character-set-server=utf8                 #设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid    #指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock        #指定数据库连接文件
bind-address = 0.0.0.0                    #设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve                         #禁用DNS解析
max_connections=2048                      #设置mysql的最大连接数
default-storage-engine=INNODB             #指定默认存储引擎
max_allowed_packet=16M                    #设置数据库接收的数据包大小的最大值
server-id = 1                             #指定服务ID号
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

Mysql数据库初识与安装_第8张图片更改安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql
chown mysql:mysql /etc/my.cnf

设置环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile	
source /etc/profile

数据初始化

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \				#生成初始化密码为空
--user=mysql \                      #指定管理用户
--basedir=/usr/local/mysql \        #指定数据库的安装目录
--datadir=/usr/local/mysql/data		#指定数据库文件的存储路径

./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

Mysql数据库初识与安装_第9张图片

添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/		#用于systemctl服务管理
systemctl daemon-reload         #刷新识别     
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启动
netstat -anpt | grep 3306       #查看端口

修改登录密码

mysqladmin -u root -p password "123456" 	#给root账号设置密码为123456,提示输入的是原始密码(为空)

授权远程登陆

mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
##授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限
 
show databases;			#查看当前已有的数据库

Mysql数据库初识与安装_第10张图片Mysql数据库初识与安装_第11张图片

 至此就完成了mysql数据库安装的全部过程啦

一键安装脚本

#!/bin/bash
#一键安装 mysql-5.7.17
#安装包下载在 /data 目录
#编译安装需较长时间,请耐心等待

mkdir /data
wget http://101.34.22.188/mysql-5.7.17/boost_1_59_0.tar.gz -P /data
wget http://101.34.22.188/mysql-5.7.17/mysql-5.7.17.tar.gz -P /data

systemctl stop firewalld && systemctl disable firewalld
setenforce 0
ntpdate ntp1.aliyun.com
tar zxvf /data/mysql-5.7.17.tar.gz -C /opt
tar zxvf /data/boost_1_59_0.tar.gz -C /usr/local
mv /usr/local/boost_1_59_0 /usr/local/boost
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make git perl expat-devel pcre-devel pcre
useradd -s /sbin/nologin mysql
cd /opt/mysql-5.7.17/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1

cd /opt/mysql-5.7.17/
make -j 4 && make install
echo > /etc/my.cnf

cat > /etc/my.cnf<> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile

cd /usr/local/mysql/bin/
./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload && systemctl start mysqld && systemctl enable mysqld
ln -s /usr/local/mysql/bin/mysql /usr/local/sbin/


pgrep "mysqld" &> /dev/null
if [ $? -eq 0 ];then
        echo -e "\033[32mmysqld服务运行正常\033[0m"
else
        echo -e "\033[31mmysqld服务运行异常,请检查\033[0m"
fi
sleep 2
echo ' '
echo -e "\033[32mMySQL 没有设置密码,执行 mysql 命令登录\033[0m"

你可能感兴趣的:(MySQL,mysql,数据库,database)