Ubuntu 22.04 环境下 MySQL 安装配置及其相关操作
数据库
数据库,作为信息管理的基石,其设计与应用涵盖了从企业级数据处理到个人应用的广泛领域。以下是对数据库原理、操作及高级特性的专业解析。
数据库原理
数据库管理系统(DBMS)
- 定义:数据库管理系统(DBMS),是一种软件系统,用于创建、管理及控制数据库资源。它提供了一套标准化的方法,用于数据的存储、检索和更新,确保数据的安全性、一致性和完整性。
数据库类型概览
- 层次数据库:采用树状结构存储数据,适合处理具有固定层次结构的信息。
- 网状数据库:允许实体间存在多对多的关系,增强了数据模型的灵活性。
- 关系数据库:基于关系代数理论,通过表格形式组织数据,支持SQL查询语言,是当前应用最广泛的数据库类型。
- 对象数据库:将面向对象的概念引入数据库设计,适用于需要高度抽象和封装的场景。
- NoSQL数据库:非关系型数据库,包括键值数据库、文档数据库、图数据库和列族数据库,特别适合处理大规模、非结构化数据。
关系数据库
关系数据库产品
- Oracle:企业级数据库的领军者,以其高性能和可靠性著称。
- DB2:IBM开发的关系数据库管理系统,适用于大型企业环境。
- SQL Server:微软推出的数据库系统,广泛应用于Windows平台。
- SyBase:曾是移动设备和嵌入式系统的首选数据库。
- PostgreSQL:开源C语言编写,被誉为“最先进”的学院派产品。
- MySQL:开源C++编写,是最流行的开源数据库之一。
- SQLite:轻量级的开源数据库,常用于嵌入式系统。
- OceanBase、巨杉数据库:国产数据库,专注于高并发和大规模数据处理。
MySQL的安装与配置
- 软件仓库安装:在Ubuntu22上安装MySQL 8,可通过
sudo apt install mysql-server
命令实现。 - 官网下载安装:手动下载并安装MySQL,适用于特定需求的场景。
- 添加MySQL官方仓库源:为了获取最新版本,可以通过添加MySQL的官方仓库源来实现。
- 下载源代码编译:适用于需要自定义配置或最新功能的开发者。
MySQL管理命令
- 服务状态与控制:使用
sudo service mysql status/start/stop/restart
或sudo systemctl status/start/stop/restart mysql
来管理MySQL服务。 - 任务管理器:使用
top
或htop
监控系统资源。 - 进程快照:通过
ps -e | grep ssh
查看运行中的进程。 - 端口信息:利用
sudo netstat -tpnl
检查网络端口状态。
核心数据库操作
- 管理员身份连接:使用
sudo mysql
以管理员身份登录数据库。 - 查看数据库列表:执行
show databases;
列出所有数据库。 - 连接数据库:使用
use database_name;
命令切换至指定数据库。 - 查看表结构:执行
desc table_name;
展示表的字段信息。 - 数据库的创建与删除:使用
create database db_name;
和drop database db_name;
创建或删除数据库。 - 数据查询:使用
select * from tb_name;
查询表中所有数据,(\G)
选项用于屏幕显示不下的数据分页输出。 - 用户管理:通过
create user 'user_name'@'%' identified by 'password';
创建新用户,并设置密码。
数据库物理结构与逻辑组件
物理结构
- 数据文件:存储实际数据的文件。
- 日志文件:记录数据更改的日志,用于恢复和审计。
- 控制文件:包含数据库的物理结构信息。
表空间
- 定义:一个或多个物理文件的集合,用于存储数据和索引。
- 组成:
- 段:根据功能划分,如数据段、索引段。
- 区:最小分配单位,用于存储空间的管理。
- 块:最小使用单位,是数据存储的基本单元。
逻辑数据对象
- 表:用于存储数据的基本单元。
- 视图:基于一个或多个表的虚拟表,提供数据的抽象层。
- 索引:加速数据检索的速度,提高查询效率。
- 函数:封装的代码块,用于执行特定计算或逻辑操作。
- 过程:一系列SQL语句的集合,可以接受参数,执行复杂操作。
- 触发器:响应特定事件自动执行的代码,如数据插入、更新或删除。
- 包:封装过程、函数和其他数据库对象的容器,用于模块化设计。