数据库浅识及MySQL的二进制安装

  • 数据库基础概念与MySQL二进制安装与初始化

    • 使用数据库的必要性

      • 数据库可以结构化储存大量数据信息,方便用户进行有效的检索访问

      • 有效的保持数据信息的一致性,完整性,降低数据冗余

      • 可以满足应用的共享和安全方面的要求

    • 数据库基本概念

      • 数据

        • 描述事物符号的记录称为数据,

          • 在数据库中以"记录"的形式按照统一的格式进行存储。

            • 一条记录
        • 存放数据的东西

          • 每张表存放的数据都必须是相同属性

            • 猪和石头不能在同一张表中
      • 数据库

        • 表是数据的集合,数据库是多张表的集合
      • 数据库管理系统(DBMS)

        • 从软件的层面来说

          • 例如mysql ,Oracle都是数据库管理系统

            • 具备的功能

              • 数据库的建立与维护功能

                • 建立数据库结构和数据的录入与转换,数据库的转储与恢复,数据库的重组与性能监视等。
              • 数据定义功能

                • 定义全局数据结构,局部逻辑数据结构,储存结构,保密模式,信息格式等。确保数据正确,有效与相容。
              • 数据操纵功能

                • 数据查询统计

                • 数据更新

              • 数据库的运行管理功能

                • 并发控制

                • 存取控制

                • 数据库内部维护等功能

              • 通信功能

                • 与其他的软件的通信
      • 数据库系统

        • 一个人-机系统,由各种各样的组件构成,数据库管理系统也只是其中一项·。
      • E-R图(实体-关系图)

          • 方框:实体

          • 菱形:关系

          • 椭圆:实体属性

      • 为了确保数据库的准确性,所以由"完整性约束"

        • 实体完整性

          • 要求记录在主键上不能有空值

          • 主键:不重复性决定了唯一性

            • 在一个实体中主键只能有一个
          • 外键:其它实体中的主键

            • 实体可以通过主键,外键来建立联系
        • 域完整性(列完整性)

          • 指定一个数据集对某一个列是否有效或者确定是否允许空值。

            • 例如定义性别字段只能取值为男或者女,不能是其他无效值。

              • 确保列(属性)录入的数据的正确性。
        • 引用完整性

          • 要求调用其它实体时,必须确保引用的实体的正确性。

            • 如果两个表之间相互关联,那么不允许引用不存在的记录
        • 用户自定义完整性

          • 类似于身份证,自己去规定各种属性(如数据类型,长度等。)

      • 存储引擎

        • 数据库的核心
    • 数据库发展历史

      • 1960年往后初具雏形,

        • 第一代,以层次模型和网状模型为主

        • 第二代,以关系模型为主

        • 第三代,以面向对象的模型为主,关系-对象模型。

      • 非关系数据库(nosql)

        • 例如储存日志信息

          • "键-值"对
        • 代表产品

          • redis

          • mongodb

        • 基于内存

          • 读写速度快,断电没,适合高速处理各种大量数据

          • 通过内存数据持久化,快照机制,追加机制,集群,来解决断电没的缺点。

        • 优点

          • 高并发读写

          • 高存储效率

          • 高扩展

          • 高可用

      • 关系数据库

        • 基于硬盘,设置缓冲区,异步储存数据

        • 读写速度

          • 寄存器,缓存级,内存,固态,硬盘
        • 基本结构

          • 通常以二维表的形式储存数据

          • 数据表中的行被称为记录或者元组

          • 数据表中的列被称为属性或者字段

          • 主键

            • 数据表中具有唯一性的列的值

              • 有且只有一个
            • primary key

            • 键:关键字

          • 外键

            • 其他表的主键
    • mysql部署调试

      • MySQL优点

        • 开源免费,跨平台

        • 多线程,多用户

        • 高性能,高可靠

        • 基于c/s架构

      • 部署

        • 安装前奏

          • 检测是否安装Mariadb如果有将其卸载

          • 添加策略或关闭防火墙,临时并永久关闭内核安全机制。

          • 安装依赖环境

            • gcc

              • GNU C语言 编译器
            • libaio

              • (async)异步 (i/o)输入输出(lib)库
          • 创建程序用户

            • useradd -M -s /sbin/nologin mysql
        • 安装

          • 解压并移动重命名到常用位置/usr/local/mysql

          • 创建data目录并更改属主属组

          • 移动到bin目录下执行mysqld脚本进行初始化

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

              • 再次初始化需要删除data目录。需谨慎

              • 记录下初始化后的临时密码

        • 调试

          • 设定配置文件

            • client

              • socket=/usr/local/mysql/data/mysql.sock

            • mysqld

              • socket=/usr/local/mysql/data/mysql.sock

              • bind-address = 0.0.0.0

                • 监听所有网卡的IP地址,并且需要防火墙也允许
              • port = 3306

                • 监听端口
              • skip-name-resolve

                • 跳过域名解析
              • basedir=/usr/local/mysql

                • 基础目录
              • datadir=/usr/local/mysql/data

                • 数据目录
              • max_connections=2048

                • 最大连接数量
              • character-set-server=utf8

                • 默认字符集
              • default-storage-engine=INNODB

                • 默认储存引擎
              • lower_case_table_names=1

                • 启用大小写不敏感
              • max_allowed_packet=16M

                • 最大sql数据的大小
              • 忘记密码的办法

                • skip-grant-tables

                  • 跳过权限表使用空密码登录

                    • 进入MySQL系统修改完毕后再把该语句取消
            • mysqld_safe

              • log-error=/usr/local/mysql/data/error.log

                • 状态日志的位置,在初始化时可以将其调到mysqld中,避免忘记临时密码,事后要及时修改密码。
              • #pid-file=/var/run/mariadb/mariadb.pid

          • 设置为全局命令

            • 软链接等多种方式
          • 设置为systemd的管理

            • Unit\] Description=mysqld After=network.target \[Service\] Type=forking ExecStart=/etc/rc.d/init.d/mysqld start ExecReload=/etc/rc.d/init.d/mysqld reload ExecStop=/etc/rc.d/init.d/mysqld stop PrivateTmp=true \[Install\] WantedBy=multi-user.target * privateTmp * 启用私有临时目录,避免数据信息泄露的风险

        • 进入数据库进行测试看是否成功

相关推荐
帧栈22 分钟前
mysql基础(一)快速上手篇
mysql
丶意冷1 小时前
mybatisPlus分页方言设置错误问题 mybatisPlus对于Oceanbase的Oracle租户分页识别错误
java·数据库·oracle·oceanbase
时序数据说3 小时前
为什么时序数据库IoTDB选择Java作为开发语言
java·大数据·开发语言·数据库·物联网·时序数据库·iotdb
戒不掉的伤怀3 小时前
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
服务器·数据库·mysql
cv高级工程师YKY3 小时前
服务器 - - QPS与TPS介绍
数据库
nbsaas-boot3 小时前
高可扩展属性建模设计:架构师的全局思考与落地方案
数据库
爱上语文4 小时前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端
陈敬雷-充电了么-CEO兼CTO4 小时前
推荐算法系统系列>推荐数据仓库集市的ETL数据处理
大数据·数据库·数据仓库·数据挖掘·数据分析·etl·推荐算法
MeshddY4 小时前
(超详细)数据库项目初体验:使用C语言连接数据库完成短地址服务(本地运行版)
c语言·数据库·单片机
wuxinyan1234 小时前
Java面试题033:一文深入了解MySQL(5)
java·数据库·mysql·面试