数据库与安装

前言

数据库是现代信息技术的基石,如同数字时代的记忆系统与神经中枢。它系统化地组织、存储和管理海量数据,使数据从零散的记录转变为可高效访问、可靠共享、深度挖掘的战略资产。

从早期文件系统的局限,到关系模型的革命,再到如今多元化的NoSQL、分布式与云原生数据库,数据库技术的发展始终围绕着数据持久化、完整性、一致性、安全性与访问效率等核心目标演进。它不仅是企业运营、科学研究和互联网服务的支撑平台,更是人工智能、大数据分析和物联网等前沿领域的核心驱动力。

本部分将引导您理解数据库的基本原理、关键技术与应用实践,探索如何通过有效的数据库设计与管理,将数据转化为洞察与价值,为构建可靠、智能的数字系统奠定坚实基础。

数据库

概念

描述客观事物的符号记录(Data),包括数字、文字、图像、声音等。

存储方式:

1、以记录形式存储,统一格式。

2、相同类型的数据存放在一起(如"学生"数据不会和"图书"混在一起)。

数据库的保存形式:

MySQL 服务 → 数据库 → 数据表 → 行(记录) + 列(字段)

发展史

第一阶段(层次型/网状型)

IMS(IBM,1969)

第二阶段(关系型)

1、把数据放在 二维表(行、列)里,而不是像层次型或网状型那样用复杂的指针去连接。

2、用数学集合和关系代数来描述和操作数据(比如选择、投影、连接)。 这样数据就更直观、更容易查询和维护。

意义:

1)现在常见的 PostgreSQL、MySQL、Oracle、SQL Server (微软)都是关系型数据库的后代。

2)关系型数据库的出现,让 SQL(结构化查询语言)成为主流。

第三阶段(新型数据库)

特点:面向对象、开放性、多平台

SQL + NoSQL 混合使用第三代

新兴数据库:MariaDB、PostgreSQL、时序数据库 Promethues

五、关系型数据库

关系型数据库

数据模型:E-R 模型(实体-关系)

● 行(记录) = 实体

● 列(字段) = 属性

● 表与表之间存在关系(1对1,1对多,多对多)

主键:唯一、非空,类比学号/身份证号。

常见产品:MySQL、Oracle、SQL Server、DB2、PostgreSQL 等。

非关系型数据库

定义:Not Only SQL,存储方式不限于表,可存储键值对、文档、列式数据等。

典型产品:Redis、Memcached、MongoDB、HBase。

应用场景:高并发、缓存、大数据实时计算。

优点

  1. 格式灵活(Key-Value、文档、图片等)
  2. 速度快(基于内存存储)
  3. 高扩展性
  4. 成本低(开源,部署简单

缺点

  1. 不支持 SQL
  2. 缺少事务处理
  3. 复杂查询支持不足
  4. 大部分数据在内存,成本较高

Redis和Memcached对比

相同点:都存储热点数据,内存运行,速度快。

不同点:Redis 支持持久化,数据可落盘;Memcached 纯内存,断电丢失。

关系型和非关系对比

小结

  1. 主流数据库系统:关系型(MySQL/Oracle/SQL Server)+ 非关系型(Redis/MongoDB)。
  2. DBMS 的作用:桥梁,负责接收请求、转化指令、执行数据库操作并返回结果。
  3. 选型思路:
    ● 数据关系清晰、结构化 → 关系型数据库
    ● 高并发、非结构化、大数据分析 → 非关系型数据库
    ● 实际应用常常 SQL + NoSQL 混合使用(如:Redis 缓存 + MySQL 持久化)。

数据库是数据的有序集合,DBMS 负责管理,发展历程从关系型到非关系型,实际应用常常结合使用来兼顾数据持久化和高并发性能。

安装

环境准备

代码:yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

  • gcc/gcc-c++:编译工具
  • ncurses/ncurses-devel:字符终端交互库
  • bison:语法分析器
  • cmake:MySOL编译工具
    创建MySQL专用用户:
    代码:useradd -s /sbin/nologin mysql

源码解压与依赖

cd /opt

tar zxvf mysql-5.7.17.tar.gz -C /opt

tar zxvf boost_1_59_0.tar.gz -C /usr/local/

mv /usr/local/boost_1_59_0 /usr/local/boost

上传压缩文件后进行解压。

Cmake编译配置

进入源码目录:

cd /opt/mysql-5.7.17/

执行cmake配置:

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

编译并安装:

make -j 4 && make install

注意:如CMake配置出错,需删除CMakeCache.txt后重新执行。

上面每个配置说明:

cmake

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定mysql的安装路径

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径

-DSYSCONFDIR=/etc \ #指定配置文件的存储路径:/etc/my.cnf

-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管理的文件

存储引擎选项:

MYISAM,MERGE,MEMORY和cSv引擎是默认编译到服务器中,并不需要明确地安装。静态编译一个存储引擎到服务器,使用-DWITH engine STORAGE ENGINE= 1

可用的存储引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,FBDERATBD,IMNOBASB(InnoDB),PARTTTON(partitioning support),和PERFSCHEMA(Performance schema)

配置MySQL

chown -R mysql:mysql /usr/local/mysql/

chown mysql:mysql /etc/my.cnf
配置文件修改

编辑/etc/my.cnf文件:

client

port = 3306

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

default-character-set=utf8

mysqld

user = mysql

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

port = 3306

character-set-server=utf8

pid-file = /usr/local/mysql/mysqld.pid

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

bind-address = 0.0.0.0

skip-name-resolve

max_connections=2048

default-storage-engine=INNODB

max_allowed_packet=16M

server-id = 1

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

port = 3306

default-character-set=utf8

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

auto-rehash

详细说明

client\] 客户端配置 port = 3306:客户端连接 MySQL 的端口,默认是 3306。 socket=/usr/local/mysql/mysql.sock:客户端通过 Unix socket 文件连接 MySQL(Linux/Unix 环境)。 default-character-set=utf8:默认字符集为 UTF-8。 \[mysqld\] 服务器端配置 user = mysql:MySQL 服务以 `mysql` 用户身份运行。 basedir=/usr/local/mysql:MySQL 安装目录。 datadir=/usr/local/mysql/data:MySQL 数据库文件存放目录。 port = 3306:MySQL 服务监听端口。 character-set-server=utf8:服务器默认字符集 UTF-8。 pid-file = /usr/local/mysql/mysqld.pid:存放 MySQL 进程 ID 的文件路径。 socket=/usr/local/mysql/mysql.sock:服务器端 socket 文件路径。 bind-address = 0.0.0.0:允许任意 IP 连接 MySQL(0.0.0.0 表示监听所有网卡)。 skip-name-resolve:关闭 DNS 解析,使用 IP 地址验证用户,提高连接速度。 max_connections=2048:最大允许同时连接数。(重点) default-storage-engine=INNODB:默认存储引擎为 InnoDB。 max_allowed_packet=16M:最大允许传输的数据包大小。 server-id = 1:MySQL 唯一 ID,常用于主从复制。 sql_mode=...:设置 SQL 模式,控制 SQL 语法和数据校验规则,如严格模式、禁止零日期、ANSI 引号模式等。 *** ** * ** *** \[mysql\] 客户端工具配置 port = 3306:客户端连接端口。 default-character-set=utf8:客户端默认字符集 UTF-8。 socket=/usr/local/mysql/mysql.sock:使用 Unix socket 文件连接。 auto-rehash:开启自动补全功能(方便在 `mysql` 命令行中自动补全数据库和表名)。 ### 环境变量设置 echo "PATH=$PATH:/usr/local/mysql/bin" \>\> /etc/profile source /etc/profile ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/99c1ab2ed9e14cf0bda83ad30c71ddfb.png) ### 数据库初始化 cd /usr/local/mysql/bin/ ./mysqld --initialize-insecure \\ # 创建空密码的root账户 --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ### 服务管理 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b6a1b04ba8fe4b7a950443ae76624bcc.png) cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ systemctl daemon-reload systemctl start mysqld.service systemctl enable mysqld netstat -anpt \| grep 3306 ### 账号密码管理 设置root密码: mysqladmin -u root -p password "123456" 登录MySQL: mysql -u root -p123456 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e6f88b62dbcc4af48c28d9ec81defa09.png)

相关推荐
沐雨风栉1 小时前
被局域网困住的文件?cpolar让 Go File 随时随地能用
运维·服务器·开发语言·数据库·后端·缓存·golang
e***87701 小时前
【Redis】centos7 systemctl 启动 Redis 失败
数据库·redis·缓存
徐同保1 小时前
n8n项目node后端sqlite相关的
java·数据库·sqlite
一点事1 小时前
oracle:创建表空间、用户和授权
数据库·oracle
w***74401 小时前
使用python进行PostgreSQL 数据库连接
数据库·python·postgresql
hhwyqwqhhwy1 小时前
【无标题】
数据库
小白hemu1 小时前
Ubuntu24.04.3LTS+5090显卡驱动安装解决黑屏问题
数据库
2501_939909051 小时前
数据库概述
数据库
6***94151 小时前
Win10下安装 Redis
数据库·redis·缓存