Linux学习之路--MySQL(1)数据库介绍及安装方法【18】---20180117


一、数据库的发展史简要


1、数据库的发展史

  • 萌芽阶段-----文件系统使用磁盘文件来存储数据
  • 初级阶段-----第一代数据库出现了网状模型、层次模型的数据库
  • 中级阶段-----第二代数据库关系型数据库和结构化查询语言
  • 高级阶段-----新一代数据库“关系-对象”型数据库

2、文件管理系统的缺点

  • 编写应用程序不方便
  • 数据冗余不可避免
  • 应用程序依赖性
  • 不支持对文件的并发访问
  • 数据间联系弱
  • 难以按用户视图表示数据
  • 无安全控制功能

3、数据的时代

  • 涉及的数据量大
  • 数据不随程序的结束而消失
  • 数据被多个应用程序共享
  • 大数据

4、数据库管理系统的优点

  • 相互关联的数据的集合
  • 较少的数据冗余
  • 程序与数据相互独立
  • 保证数据的安全、可靠
  • 最大限度地保证数据的正确性
  • 数据可以并发使用并能同时保证一致性

5、数据库管理系统

  • 数据库是数据的汇集。它以一定的组织形式存于存储介质上
  • DBMS是管理数据库的系统软件,它实现数据库系统的各种功能,是数据库系统的核心
  • DBA:负责数据库的规划、设计、协调、维护和管理等工作
  • 应用程序指以数据库为基础的应用程序

6、数据库管理系统的基本功能

  • 数据定义
  • 数据处理
  • 数据安全
  • 数据备份

7、数据库系统的架构

  • 单机架构
  • 大型主机/终端机架构
  • 主从式架构(C/S)
  • 分布式架构

二、关系型数据库


1、关系:关系就是二维表,并满足如下性质(表中的行、列次序并不重要)

  • 行row:表中的每一行,又称为一条记录
  • 列column:表中的每一列,称为属性,字段
  • 主键Primary key:用于唯一确定一个记录的字段
  • 域domain:属性的取值范围,如:性别只能是'男'和'女'两个值

2、RDBMS

  • MySQL:MySQL,MariaDB,Percona Server
  • PostgreSQL:简称为pgsql,EnterpriseDB
  • Oracle:
  • MSSQL:
  • DB2

3、事物transaction

  • 多个操作被当作一个整体对待
  • ACID:

    A:原子性

    C:一致性

    I:隔离性

    D:持久性

4、实体-联系模型E-R

  • 实体Entity

    客观存在并可以互相区分的客观事物或抽象事件成为实体

    在E-R图中用矩形框表示实体,把实体名写在框内

  • 属性

    实体所具有的特征或性质

  • 联系

    联系是数据之间的关联集合,是客观存在的应用语义链

    实体内部的联系:指组成实体的各属性之间的联系,如职工实体中,职工号和部门经理号之间有一种关联关系

    实体之间的联系:指不同实体之间联系,例如学生选修课和学生基本信息实体之间

    实体之间的联系用菱形框表示

5、联系类型

  • 联系的类型

    一对一联系(1:1)

    一对多联系(1:n)

    多对多练习(n:n)

6、数据三要素

  • 数据结构:

包括两类:

一类是与数据类型、内容、性质有关的对象,比如关系模型中的域、属性和关系等

另一类是与数据之间联系有关的对象,它从数据组织层表达数据记录与字段的机构

  • 数据的操作

数据提取:在数据集合中提取感兴趣的内容(SELSECT)

数据更新:变更数据库中的数据(INSERT、DELETE、UPDATE)

  • 数据的约束条件

是一组完整性规则的集合

实体(行)完整性 Entity integrity

域(列)完整性 Domain INtegrity

参考完整性 Referential Integrity

7、简单数据规划流程

  • 第一阶段:收集数据,得到字段

收集必要且完整的数据项

转换成数据表的字段

  • 第二阶段:吧字段分类、归入表,建立表的联系

关联:表和表间的关系

分割数据表并建立关联的有点

节约空间

减少输入错误

方便数据修改

  • 第三阶段

规范化数据库

8、数据库的正规化分析

  • RDMBS设计范式基础概念

设计关系数据库时,遵从不同的规划要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式

各种范式呈递次规范,越高的范式数据库冗余越小

  • 目前关系数据库有六种凡是:

第一范式(1 NF)

第二范式(2 NF)

第三范式(3 NF)

巴德斯科范式(BCNF)

第四范式(4 NF)

第五范式(5 NF,又称完美范式)

满足最低要求的范式为第一范式(1 NF),在第一范式的基础上进一步满足更多规范要求的称为第二范式(2 NF)

其余范式依次类推,一般说来,数据库只需要满足第三范式(3 NF)即可

9、范式

  • 1 NF:无重复的列,每一列都是不可分割的基本数据项,同一列不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,除去同类型的字段,就是无重复的列
  • 2 NF:属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被惟唯一地区分,通常为表加上一个列,以存储各个实例的唯一标识PK,非PK的字段需要与整个PK有直接相关性
  • 3 NF:属性不依赖于其它非主属性,满足第三范式必须先满足第二范式,第三范式要求一个数据库表中不包含已在其他表中已包含的非主关键字信息,非PK的字段间不能有从属关系

10、SQL概念

  • SQL:Structure Query Language

    结构化查询语言

    SQL解释器

    数据存储协议:应用层协议,C/S

  • S:server,监听于套接字,接收并处理客户端的应用请求
  • C:Client

    程序接口

    CLI

    GUI

    应用编程接口

    ODBC:Open Database Connectivity

    JDBC:Java Data Base Connectivity

11、约束

  • 约束:constraint,表中的数据要遵守的限制
  • 主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行,必须提供数据,即NOT NULL,一个表只能有一个主键
  • 惟一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行,允许为NULL,一个表中可以存在多个
  • 外键:一个表中的某字段可以填入的数据取决于另一个表的主键或唯一键已有的数据
  • 检查:字段值在一定范围内

12、索引

  • 将表中的一个或都够恶字段中的数据复制一份另存,并且这些需要按特定的次序排列存储
  • 关系运算

    选择:挑选出符合条件的行

    投影:挑选出需要的字段

    连接:表间字段的关联

13、数据模型

  • 数据抽象

    物理层:决定数据的存储格式,即RDBMS在磁盘上如果组织文件

    逻辑层:描述存储什么数据,以及数据间存在什么样的关系

    视图层:描述DB中的部分数据

  • 关系模型的分类

    关系模型

    基于对象的关系模型

    半结构化的关系模型:XML数据(扩展的标签语言)

[[email protected]]#vim /etc/gconf/gconf.xml.defaults/%gconf-tree.xml

三、MySQL


?

1、MySQL历史?

  • 1979年:TcX公司 Monty Widenius,Unireg
  • 1996年:发布MySQL1.0,Solaris版本,Linux版本
  • 1999年:MySQL AB公司,瑞典
  • 2003年:MySQL 5.0版本,提供视图、存储过程等功能
  • 2008年:sun 收购
  • 2009年:oracle收购sun
  • 2009年:Monty成立MariaDB

2、MySQL体系结构

myisam锁是整表锁定,innodb是行锁,锁住整行

myisam不支持事物,innodb支持事物


3、MySQL安装方式

  • ?安装方式:
        1、源代码:编译安装
        2、二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用
        3、程序包管理器管理的程序包
            CentOS安装光盘
            项目官方:
            https://downloads.mariadb.org/mariadb/repositories/
        4、安装和使用MariaDB
            CentOS 7直接提供
            CentOS 6

4、MariaDB的特性

  • MariaDB的特性:
        单进程,多线程
        插件式存储引擎:存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择
        存储引擎也称之为“表类型”
  • (1) 更多的存储的存储引擎
        MyISAM ==> Aria
        InnoDB ==> XtraDB
        Mysql5.5.8开始innoDB引擎是MYSQL默认引擎,InnoDB对比MyISAM的最大特点就是InnoDB支持事务
  • (2) 诸多扩展和新特性
  • (3) 提供了较多测试组件
  • (4) 开源
  • Centos7的MariaDB数据库包括两个包组:
        Mariadb

    mariadb-client

  • mariadb组包括下面包:
        mariadb-server:mandatory package
        mariadb-bench:optional package
        mariadb-test:optional package
  • mariadb-client组包括下面包:
        Mariadb:mandatory package
        MySQL-python:default package
        mysql-connector-odbc:default package
        libdbi-dbd-mysql:optional package
        mysql-connector-java:optional package
        perl-DBD-MySQL:optional package
  • 配置文件:
        /etc/my.cnf 和 /etc/my.cnf.d/ *.cnf

yum安装模式

[[email protected] ]#cat /etc/yum.repos.d/mariadb.repo 
[mariadb]
name = MariaDB
baseurl = gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
[[email protected] ]#yum install mariadb-server
。。。。。
Dependencies Resolved
==================================================================================================================
 Package                           Arch               Version                           Repository           Size
==================================================================================================================
Installing:
 MariaDB-Galera-server             x86_64             5.5.58-1.el6                      mariadb              27 M
     replacing  mysql-server.x86_64 5.1.73-8.el6_8
 MariaDB-client                    x86_64             5.5.59-1.el6                      mariadb              10 M
     replacing  mysql.x86_64 5.1.73-8.el6_8
 MariaDB-compat                    x86_64             5.5.59-1.el6                      mariadb             2.7 M
     replacing  mysql-libs.x86_64 5.1.73-8.el6_8
Installing for dependencies:
 MariaDB-common                    x86_64             5.5.59-1.el6                      mariadb              23 k
 galera                            x86_64             25.3.22-1.rhel6.el6               mariadb             8.8 M
 lsof                              x86_64             4.82-5.el6                        base                324 k
Transaction Summary
==================================================================================================================
Install       6 Package(s)
。。。。。。
[[email protected] ]#yum info mariadb-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
Name        : MariaDB-server
Arch        : x86_64
Version     : 5.5.59
Release     : 1.el6
Size        : 44 M
Repo        : mariadb
Summary     : MariaDB: a very fast and robust SQL database server
URL         : 
http://mariadb.org
License     : GPLv2
Description : MariaDB: a very fast and robust SQL database server
            : 
            : It is GPL v2 licensed, which means you can use the it free of charge under the
            : conditions of the GNU General Public License Version 2 ().
            : 
            : MariaDB documentation can be found at 
            : MariaDB bug reports should be submitted through https://mariadb.atlassian.net/
            
[[email protected] ]#rpm -ql MariaDB-client      ---》这个包名字注意到小写敏感
/etc/my.cnf.d                               ---》主配置文件
/etc/my.cnf.d/mysql-clients.cnf             V
/usr/bin/msql2mysql
/usr/bin/mysql
/usr/bin/mysql_embedded
/usr/bin/mysql_find_rows
/usr/bin/mysql_plugin
/usr/bin/mysql_waitpid
/usr/bin/mysqlaccess
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlshow
/usr/bin/mysqlslap
/usr/share/man/man1/msql2mysql.1.gz
/usr/share/man/man1/mysql.1.gz
/usr/share/man/man1/mysql_find_rows.1.gz
/usr/share/man/man1/mysql_plugin.1.gz
/usr/share/man/man1/mysql_waitpid.1.gz
/usr/share/man/man1/mysqlaccess.1.gz
/usr/share/man/man1/mysqladmin.1.gz
/usr/share/man/man1/mysqlbinlog.1.gz
/usr/share/man/man1/mysqlcheck.1.gz
/usr/share/man/man1/mysqldump.1.gz
/usr/share/man/man1/mysqlimport.1.gz
/usr/share/man/man1/mysqlshow.1.gz
/usr/share/man/man1/mysqlslap.1.gz/usr/share/mysql
/usr/share/mysql/charsets
/usr/share/mysql/charsets/Index.xml
/usr/share/mysql/charsets/R

[[email protected]~]#useradd -r mysql -s /sbin/nologin

[[email protected]~]#id mysql

uid=997(mysql) gid=995(mysql) groups=995(mysql)

[[email protected]~]#geten

getenforce  getent      

[[email protected]~]#getent passwd mysql

mysql:x:997:995::/home/mysql:/sbin/nologin

[[email protected]~]#tar xfv mariadb-10.2.12-linux-x86_64.tar.gz -C /usr/local/

[[email protected]]#ls

bin  etc  games  include  lib  lib64  libexec  mariadb-10.2.12-linux-x86_64  sbin  share  src

[[email protected]]#ln -s mariadb-10.2.12-linux-x86_64/ mysql

[[email protected]]#ll

total 0

drwxr-xr-x.  2 root root   6 Nov  5  2016 bin

drwxr-xr-x.  2 root root   6 Nov  5  2016 etc

drwxr-xr-x.  2 root root   6 Nov  5  2016 games

drwxr-xr-x.  2 root root   6 Nov  5  2016 include

drwxr-xr-x.  2 root root   6 Nov  5  2016 lib

drwxr-xr-x.  2 root root   6 Nov  5  2016 lib64

drwxr-xr-x.  2 root root   6 Nov  5  2016 libexec

drwxrwxr-x  12 1021 1004 290 Jan  4 06:01 mariadb-10.2.12-linux-x86_64

lrwxrwxrwx   1 root root  29 Jan 21 21:56 mysql -> mariadb-10.2.12-linux-x86_64/

drwxr-xr-x.  2 root root   6 Nov  5  2016 sbin

drwxr-xr-x.  5 root root  49 Jan 14 14:59 share

drwxr-xr-x.  2 root root   6 Nov  5  2016 src

[[email protected]]#chown -R mysql.mysql mysql/                                          ---》修改文件的所有者所属主

[[email protected]]#echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh       ---》修改PATH变量

[[email protected]]#. /etc/profile.d/mysql.sh

[[email protected]]#partprobe                                                              ---》分区后生效

Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.

5、MariaDB安装

  • 安装
        yum groupinstall mariadb mariadb-client
        systemctl start mariadb
        systemctl enable mariadb
  • 提高安全性
        mysql_secure_installation
    ?        设置数据库管理员root口令
    ?        禁止root远程登录
    ?        删除anonymous用户帐号
    ?        删除test数据库

6、MairaDB配置

  • 侦听3306/tcp端口可以在绑定有一个或全部接口IP上
  • vim /etc/my.cnf
        [mysqld]加一行:
        skip-networking=1 关闭网络连接,只侦听本地客户端, 所有和服务器的交互都通过一个socket实现

    socket的配置存放在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf修改

  • firewall-cmd --permanent --add-service=mysql
  • firewall-cmd --reload

7、通用二进制格式安装过程

  • (1) 准备用户
        groupadd -r -g 306 mysql
        useradd -r -g 306 -u 306 –m –d /app/data mysql
  • (2) 准备数据目录
        以/app/data为例,建议使用逻辑卷
    ?  chown mysql:mysql /app/data
  • (3) 准备二进制程序
        tar xf mariadb-VERSION-linux-x86_64.tar.gz -C /usr/local
        cd /usr/local;ln -sv mariadb-VERSION mysql
        chown -R root:mysql /usr/local/mysql/
  • (4) 准备配置文件
        配置格式:类ini格式,各程序由单个配置文件提供配[prog_name]
        配置文件查找次序:后面覆盖前面的配置文件
        /etc/my.cnf -->/etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
        mkdir /etc/mysql/
        cp support-files/my-large.cnf /etc/mysql/my.cnf
        [mysqld]中添加三个选项:
            datadir = /app/data
            innodb_file_per_table = on
            skip_name_resolve = on 禁止主机名解析,建议使用
  • (5)创建数据库文件
        cd /usr/local/mysql/
        ./scripts/mysql_install_db --datadir=/app/data --user=mysql
  • (6)准备日志文件
        touch /var/log/mysqld.log
        chown mysqld /var/log/mysqld.log
  • (7)准备服务脚本,并启动服务
        cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
        chkconfig --add mysqld
        service mysqld start
  • (8)安全初始化
        /user/local/mysql/bin/mysql_secure_installation

原文地址:http://blog.51cto.com/exia00linux/2069482

时间: 2024-08-02 19:11:30

Linux学习之路--MySQL(1)数据库介绍及安装方法【18】---20180117的相关文章

萌新的Linux学习之路(十二)---软件安装

一.软件名称识别 [abrt-addon-ccpp]-[2.1.11-19].[e17].[x86_64].rpm   ##rpm结尾的适用于redhat操作系统 软件名称      软件版本 适用系统 64位 二.如何安装软件 1.rpm rpm     -ivh       ##安装 -v显示过程,-h指定加密方式为hash -e         ##卸载 -ql        ##查询软件生成文件 -qlp        ##查询软件安装后会生成什么文件 -qa        ## 查新系

linux学习之路之文本的查找---find命令的使用

文本的查找可以使用两种方式来实现,即使用locate命令来查找和find命令来查找 那么这两种方式有什么区别呢? locate:是一种非实时查找,所谓非实时查找就是查找的不够实际,不够精确.因为locate查找是在 系统文件数据库中进行的,而数据库默认是一天更新一次,也就是说你查找的文件再数据库 更新之前查找的话,有可能找不到文件,因为那时数据库还没有去读取硬盘上的文件,所以 有些文件没有写入到数据库中. 可以收到更新数据库,使用命令updatedb 因为不上在硬盘上读取,因此速度快 locat

linux学习之路之LVM

试想一种情况,当初我们在规划磁盘的时候,只给某一个磁盘或分区之划分了30G的容量,但是后来,随着业务的需求,该磁盘或者分区的使用量会越来越大,等到以后再有数据存放时,发现该磁盘或者分区的容量不够用,此时该怎么办了?可以新增一个磁盘,经过格式化,挂载等过程就可以使用这个磁盘了,再将原来磁盘的数据完全的复制过来.等到后来又发现,规划的磁盘又太大了,然后又使用上述方法来减少磁盘的大小.虽然这种方法可行,但是效率低,比较复杂.不应该是我们首选的方法. 当然,我们可以这样做,将多个磁盘或者分区(PV)组合

linux学习之路之磁盘管理和文件系统三

ext3文件系统和ext2文件系统的区别? 在某些时候,某个用户在linux系统上写入数据,这时系统正好断电或者系统核心出现错误,写入的数据仅有inode table和datablock而已,可能会导致之前写过的数据没有保存在磁盘上.而当系统重启后,系统可能会对没有保存的数据进行数据恢复.但是,由于系统并不知道是哪个文件不完整,因此会遍历整个文件系统中inode,来查看block是否完整.不过,当某个文件的数据太大时,数据的恢复时间可能会比较长,而这对于服务器来说是不利的.所以在这种情况下,也就

linux学习之路之vim编辑器的使用

本章将介绍vim编辑器的使用 vim编辑器是vi编辑器的增强版 vim是一种全屏的编辑器,是一种模式化的编辑器,之所以称为模式化的编辑器,因为vim有多种模式. 接下来将介绍vim主要的三种模式: 编辑模式(也叫命令模式):在该模式下你可以完成字符串跳转,字符串删除,翻屏操作等操作 输入模式:在该模式下输入的任何字符都会保存在该文件中,作为文件的一部分 末行模式:在该模式下,可以实现字符串搜索,字符串替换等操作 vim编辑器的三种模式之间的相互转换 模式转换: 编辑模式-->输入模式 i:在当前

linux学习之路之sed命令使用

本章主要介绍sed的命令使用 sed(Stream Editor)是一种流编辑器,或者叫做行编辑器,以行为单位进行编辑处理,而后续会介绍的vi编辑器是一种全屏编辑器. sed的工作原理: 逐行读取文件中的每一行,并将其放在内存空间中,在对内存空间中的数据进行处理,将处理后的结果打印到屏幕上.而这种内存空间也叫做模式空间. 所谓模式空间:就是将放在内存空间的数据根据模式来匹配,匹配成功的数据进行相应的编辑处理,将处理后的数据打印到屏幕上去. 说明:sed命令默认将文件中所有的行打印到屏幕上去. s

linux学习之路之目录管理和文件管理

我们知道linux文件系统是一个树型结构,在最上层是'/'目录,根目录的下面就是其他目录,而这些目录下面又可以有多个子目录,这样一层一层的就形成一个树型结构图.那是不是我们查找某一个文件必须要从根目录开始往下查找的呢?当然不是,在这里我将会介绍两种路径方式:相对路径和绝对路径. 什么是相对路径和绝对路径? 绝对路径:就是从'/'根目录开始往下一级一级的查找,直到目的所经过的线路. 相对路径:就是相对当前位置而言来找到目的地所经过的线路. 目录的创建 mkdir:用于创建目录 语法格式:mkdir

linux学习之路及文本查看和文本处理命令

这一篇主要介绍几个常用的文本查看命令和文本处理命令. 首先介绍文本查看命令 cat:用于连接文件并显示 说明:当只有一个文件时,则用于查看文件内容:当有多个文件时,cat命令会将这些文件连接起来,在一起显示出来 语法格式:cat [option] FILE... -n:显示内容的时候把行号显示出来 -E:显示每一行的结束符$符(默认不显示) tac:也是用于显示文件内容,只不过他是将文件的内容倒过来显示,与cat相反 -n:显示行号 -E:显示每一行结尾的结束符$ 分屏操作命令 more与les

linux学习之路之创建私钥CA及使用CA为客户端颁发证书

创建CA(Certificate Authority) CA的储存格式主要有2种:x509和pkcs12 x509是目前最主流的CA储存格式,在x509格式的证书中,储存的内容主要有: 证书的公钥和使用期限 证书的合法拥有着 证书该如何被使用 CA的信息 CA签名的校验码 默认情况下,TCP/IP模型和OSI模型,并没有实现数据的加密,而要实现数据的加密需要使用TLS/SSL协议,TLS和SSL在有些Linux版本上实现的机制是相同的,因此在这里我们之介绍SSL协议 SSL(Secure Soc