文章目录
- 一,数据库的基本概念
-
- 1.基本概念
- 2.数据库管理系统
- 3.数据库系统 (Database System, DBS)
-
- 3.1数据库系统的组成
- [3.2 DBMS的工作模式(数据流向)*](#3.2 DBMS的工作模式(数据流向)*)
- 二,数据库的发展
-
- [1. 第一代数据库](#1. 第一代数据库)
-
- [1.1 出现时间:](#1.1 出现时间:)
- [1.2 数据模型:](#1.2 数据模型:)
- [1.3 作用:](#1.3 作用:)
- [1.4 当前地位:](#1.4 当前地位:)
- [2. 第二代数据库](#2. 第二代数据库)
-
- [2.1 出现时间:](#2.1 出现时间:)
- [2.2 数据模型:](#2.2 数据模型:)
- [2.3 作用:](#2.3 作用:)
- [2.4 当前地位:](#2.4 当前地位:)
- [3. 第三代数据库](#3. 第三代数据库)
-
- [3.1 出现时间:](#3.1 出现时间:)
- [3.2 数据模型:](#3.2 数据模型:)
- [3.3 作用:](#3.3 作用:)
- [3.4 当前地位:](#3.4 当前地位:)
- 三,主流的数据库介绍
-
- 1.常见的数据库
- 2.云端数据库
- 3.时序数据库
- 4.关系数据库
- 5.非关系数据库
- 6.MySQL数据库
-
- 6.1基本信息
- 6.2主要特点
- [6.3MySQL 商业版和MySQL 社区版](#6.3MySQL 商业版和MySQL 社区版)
-
- [1.MySQL 社区版](#1.MySQL 社区版)
- [2.MySQL 商业版](#2.MySQL 商业版)
- [6.4MySQL 商业版与社区版的区别](#6.4MySQL 商业版与社区版的区别)
- 6.5MySQL产品
- 四,MySQL安装方法
-
- 方法一,yum下载
- 方法二,编译安装MySQL
-
- [步骤 1: 安装必要的依赖项](#步骤 1: 安装必要的依赖项)
- [步骤 2: 下载 MySQL 5.7.20 源代码](#步骤 2: 下载 MySQL 5.7.20 源代码)
- [步骤 3: 配置编译选项](#步骤 3: 配置编译选项)
- [步骤 4: 编译和安装 MySQL](#步骤 4: 编译和安装 MySQL)
- [步骤 5: 创建 MySQL 用户和组](#步骤 5: 创建 MySQL 用户和组)
- [步骤 6: 设置目录权限](#步骤 6: 设置目录权限)
- [步骤 7: 初始化数据库](#步骤 7: 初始化数据库)
- [步骤 8: 设置 MySQL 配置文件](#步骤 8: 设置 MySQL 配置文件)
- [步骤 9: 设置 MySQL 服务](#步骤 9: 设置 MySQL 服务)
- [步骤 10: 启动 MySQL 服务](#步骤 10: 启动 MySQL 服务)
- [步骤 11: 配置环境变量](#步骤 11: 配置环境变量)
- [步骤 12: 安全配置](#步骤 12: 安全配置)
- [步骤 13: 登录 MySQL](#步骤 13: 登录 MySQL)
- 方法三,二进制安装
-
- [1. 下载 MySQL 8.0.35 二进制包](#1. 下载 MySQL 8.0.35 二进制包)
- [2. 解压二进制包](#2. 解压二进制包)
- [3. 创建 MySQL 用户和组](#3. 创建 MySQL 用户和组)
- [4. 设置目录权限](#4. 设置目录权限)
- [5. 初始化 MySQL 数据目录](#5. 初始化 MySQL 数据目录)
- [6. 配置 MySQL](#6. 配置 MySQL)
- [7. 设置环境变量](#7. 设置环境变量)
- [8. 启动 MySQL 服务](#8. 启动 MySQL 服务)
- [9. 设置 MySQL 开机启动](#9. 设置 MySQL 开机启动)
- [10. 登录并配置 MySQL](#10. 登录并配置 MySQL)
- [11. 运行 MySQL 安全配置脚本](#11. 运行 MySQL 安全配置脚本)
一,数据库的基本概念
1.基本概念
1.1数据(Data)
- 描述事物的符号记录
- 包括数字,文字、图形、图像、声音、档案记录等
- 以"记录"形式按统一的格式进行存储
1.2表
- 将不同的记录组织在一起
- 用来存储具体数据
1.3数据库
- 表的集合,是存储数据的仓库
- 以一定的组织方式存储的相互有关的数据集合
2.数据库管理系统
数据库管理系统是用于有效组织、管理和存取数据库资源的系统软件。它在操作系统的支持下,提供用户对数据库进行各种操作的能力。
主要功能:
- 数据库的建立和维护功能:
包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。
- 数据定义功能:
包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数 据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
- 数据操纵功能:
包括数据查询统计和数据更新两个方面。
- 数据库的运行管理功能:
这是数据库管理系统的核心部分,包括并发控制、存取控,制、数据库内部维护等功能。
- 通信功能:
DBMS与其他软件系统之间的通信,如·Access(第一代数据库)能与其他·Office,组件进行数据交换
3.数据库系统 (Database System, DBS)
数据库系统是一个人机系统,包含了硬件、操作系统、数据库、数据库管理系统(DBMS)、应用软件和数据库用户(包括数据库管理员)等组成部分。用户可以通过 DBMS 或应用程序来操作数据库,从而完成数据管理和处理任务。
3.1数据库系统的组成
- 硬件 (Hardware) :
- 定义: 运行数据库系统所需的物理设备,包括服务器、存储设备、网络设备等。
- 作用: 提供数据库系统的基础计算资源和存储空间。
- 操作系统 (Operating System) :
- 定义: 管理硬件资源,并为数据库管理系统和应用软件提供支持的平台。
- 作用: 确保数据库系统在硬件之上正常运行,并提供必要的系统服务,如内存管理、进程调度、文件系统等。
- 数据库 (Database) :
- 定义: 按一定组织方式存储的相互有关的数据集合,是数据库系统的核心部分。
- 作用: 用于存储和管理大量的数据,支持数据的高效查询、更新和维护。
- 数据库管理系统 (DBMS) :
- 定义: 用于组织、管理和存取数据库资源的系统软件。
- 作用: 提供用户和应用程序与数据库交互的接口,管理数据的存储和访问。
- 应用软件 (Application Software) :
- 定义: 为解决具体管理或数据处理任务而编写的程序,通常以友好的界面与用户交互。
- 作用: 简化数据库的使用,使得普通用户无需具备专业的计算机知识即可操作数据库。典型的例子包括 Navicat 等数据库管理工具。
- 例子: 人事管理、财务管理、图书管理等信息管理软件,以及各种信息咨询系统。
- 数据库用户 (Database Users) :
- 定义: 使用数据库系统的人员,包括普通用户和数据库管理员(DBA)。
- 作用: 普通用户通过应用软件或直接使用 DBMS 进行数据操作;数据库管理员负责数据库的更新和备份、系统维护、用户管理等工作,确保数据库系统的正常运行。
数据库管理员 (Database Administrator, DBA)
DBA 是负责数据库系统正常运行的重要角色,通常由业务水平较高、经验丰富的人员担任。他们的主要职责包括数据库的更新和备份、数据库系统的维护、用户管理等,确保数据库的安全、可靠性和性能。 数据库管理员(DBA)在数据库系统的管理和维护中扮演着至关重要的角色。他们的工作直接影响数据库的运行效率、安全性和稳定性。** **
3.2 DBMS的工作模式(数据流向)*
- 接受应用程序的数据请求和处理请求:
DBMS接收到来自应用程序的请求。这些请求通常通过API、SQL查询、存储过程调用等方式传递到数据库。
DBMS会解析和验证请求的合法性,包括检查语法、用户权限等。
- 将用户的数据请求(高级指令)转换为复杂机器代码(底层指令):
DBMS将用户提交的高级指令(如SQL查询)转换为底层机器代码或具体的操作指令。这可能包括生成查询计划、优化查询等步骤,以确保指令能够高效地在数据库内部执行。
- 实现对数据库的操作:
转换后的底层指令由DBMS执行。这可能涉及检索、插入、更新或删除数据库中的数据。
在这一阶段,DBMS负责管理事务、维护数据的一致性和完整性、执行索引查找等。
- 从数据库的操作中接受查询结果:
执行完操作后,DBMS将生成的结果集返回给请求的会话。这些结果可以是数据行、执行状态、统计信息等。
DBMS还负责处理可能发生的错误或异常情况,并将其信息返回给用户。
- 对查询结果进行处理(格式转换):
有时,DBMS会对结果进行进一步处理,例如格式化输出、将数据转换为特定的结构(如JSON或XML)等。
这种处理通常是根据应用程序的需求来进行的,以确保数据能够直接被应用程序所使用。
- 将处理结果返回给用户:
处理完毕后的数据通过API或SQL客户端返回给应用程序或最终用户。
同时,DBMS可能还会返回额外的元数据信息,如查询执行时间、受影响的行数等。
二,数据库的发展
1. 第一代数据库
1.1 出现时间:
- 20世纪60年代,第一代数据库系统诞生。
1.2 数据模型:
- 第一代数据库系统主要包括以下两种数据模型:
- 层次模型 (Hierarchical Model) :
- 数据以树状结构存储,父节点与子节点之间具有一对多的关系。
- 适合表示层次关系明确的数据结构,但不适合处理复杂的多对多关系。
- 网状模型 (Network Model) :
- 数据以图结构存储,允许多对多关系。
- 能够更加灵活地表示复杂的数据关系,但其复杂性也使得管理和查询更加困难。
- 层次模型 (Hierarchical Model) :
1.3 作用:
- 第一代数据库系统为数据的统一管理和共享提供了支持,使得数据可以集中存储和访问,减少了数据冗余。
- 适合早期相对简单的数据管理需求,为后续数据库技术的发展奠定了基础。
1.4 当前地位:
- 虽然第一代数据库系统的模型在现代应用中不再主流,但它们为数据库技术的发展奠定了理论基础,尤其是在数据管理和结构化存储方面的贡献依然具有历史意义。
2. 第二代数据库
2.1 出现时间:
- 20世纪70年代初,第二代数据库系统开始出现。
2.2 数据模型:
- 第二代数据库系统主要采用以下数据模型:
- 关系模型 (Relational Model) :
- 由E.F. Codd在1970年提出,基于数学集合理论。
- 数据以表格形式存储,表与表之间通过键值(如主键、外键)关联。
- 关系模型提供了更直观且易于理解的结构,极大地简化了数据库的设计和管理。
- 关系模型 (Relational Model) :
2.3 作用:
- 第二代数据库系统简化了数据库设计、查询和管理,提高了开发和维护的效率。
- 关系模型逐渐取代了层次模型和网状模型,成为数据库行业的主流。
2.4 当前地位:
- 至今,关系数据库仍然占据着数据库应用的主导地位 ,广泛应用于各种业务系统中,如MySQL、Oracle、SQL Server等,继续在数据库领域中发挥重要作用。
3. 第三代数据库
3.1 出现时间:
- 20世纪80年代末到21世纪初,第三代数据库系统逐步问世。
3.2 数据模型:
- 第三代数据库系统包括多种不同类型的数据库模型:
- 面向对象数据库 :
- 采用面向对象的编程理念,数据以对象的形式存储,适合处理复杂的数据类型。
- 分布式数据库 :
- 通过网络将分布在多个物理位置的数据管理为一个整体,具有高可用性和容错性。
- NoSQL数据库 :
- 不依赖关系模型,支持多种数据模型(如键值对、文档、列族、图结构等),适合处理非结构化和半结构化数据。
- NewSQL数据库 :
- 结合了关系数据库的ACID一致性和NoSQL的高扩展性,提供对复杂事务和大规模并发处理的支持。
- 面向对象数据库 :
3.3 作用:
- 第三代数据库系统进一步增强了对复杂数据 的处理能力,并且在大数据 、高并发 和分布式计算等方面提供了强有力的支持,适应了互联网时代的数据需求。
3.4 当前地位:
随着云计算和大数据技术的普及,第三代数据库系统在特定场景中得到了广泛应用 ,特别是在需要高扩展性 、实时性 和分布式处理的领域。
三,主流的数据库介绍
1.常见的数据库
- SQL Server(微软的,面向Windows操作系统,简单、易用)
- Oracle(甲骨文的,面向所有主流平台,安全、完善,操作复杂)
- DB2(IBM的,面向所有主流平台,大型、安全、完善)
- MySQL(被甲骨文公司收购了,免费、开源、体积小)
2.云端数据库
- Amazon RDS(Relational Database Service)
- 阿里云 RDS
- PostgreSQL
- My MySQL 5.7 和 8.0
- Oracle
- Google BigQuery
3.时序数据库
- InfluxDB
- TimescaleDB
- Prometheus
- OpenTSDB
- Druid
- QuestDB
- Graphite
- VictoriaMetrics
- ClickHouse (虽然主要是分析数据库,但常用于时序数据)
- RRDTool
- MariaDB
4.关系数据库
- 关系数据库系统是基于关系模型的数据库系统。
- 关系模型的数据结构使用简单易懂的二维数据表(即表格形式)。
- 关系模型可以用简单的"实体-关系"(E-R)图来表示。
- E-R 图中包含了三要素:实体(即数据对象)、关系和属性。
- E-R 图是一种常用的工具,用于在关系数据库设计中表示数据模型,通过图形化的方式帮助理解数据之间的关系。
例图:银行客户和银行账户之间e-r图
4.1关系数据库概念:实体、属性和联系,以及这些概念如何构成关系数据库。
1.实体:
- 实体是指可以在现实世界中识别的对象或事件。它们是数据库中存储的数据的主要对象。
- 例:银行客户、银行账户等。
2.属性:
- 属性是实体所具有的特征,每个实体可以有多个属性。
- 例:"银行客户"实体中的每个实例具有姓名、地址、电话等属性。
3.联系:
- 联系是实体集之间的关系,描述了实体之间的关联。
- 例:银行客户和银行账户之间存在"储蓄"的关系。
所有实体及实体之间联系的集合构成了一个关系数据库。
4.2关系数据库的存储结构是二维表格
在每个二维表中
- 每一行称为一条记录,用来描述一个对象的信息
- 每一列称为一个字段,用来描述对象的一个属性
4.3关系型数据库应用
关系型数据库 | 应用 |
---|---|
Oracle,MySQL | 12306用户信息系统 |
SQL Server,Sybase | 淘宝账号系统 |
Informix,Access | 联通手机号信息系统 |
DB2,FoxPRO | 银行用户账户系统 |
PostgreSQL | 网站用户信息系统 |
关系型数据库:
- 适用于对关系明确的数据建立模型,定义和存储数据。
- 关系型数据库擅长处理结构化数据,通常用于需要高度一致性和事务支持的场景,如金融、银行等领域。
5.非关系数据库
- 非关系型数据库 也被称作 NoSQL(Not Only SQL)。
- 存储数据不以关系模型为依据,不需要固定的表格式。
5.1非关系型数据库的优点
- 数据库可高并发读写。
- 对海量数据高效存储与访问。
- 数据库具有高扩展性与高可用性。
5.2常用的非关系型数据库
1.常见的非关系型数据库
- 键值存储数据库 (Key-Value Stores)
- **Redis ** 支持持久化的内存数据库,适合用作缓存以及持久化存储。
- DynamoDB
- Riak
- **Memcached 主要用于缓存数据,提供快速的读写操作,但不支持持久化。 **
应用场景: 会话管理、缓存、配置管理等。
- 文档数据库 (Document Stores)
- **MongoDB 面向文档的数据库,适合存储半结构化和非结构化数据。 **
- CouchDB
- RethinkDB
- MarkLogic
应用场景: 内容管理系统、博客平台、实时分析等。
- 列族存储数据库 (Column-Family Stores)
- Cassandra
- **HBase ** 基于Hadoop的分布式数据库,擅长处理大规模的数据存储和检索。
- ScyllaDB
应用场景: 分布式大数据存储、数据分析、时间序列数据等。
- 图数据库 (Graph Databases)
- Neo4j
- Amazon Neptune
- OrientDB
- ArangoDB
应用场景 : 社交网络分析、推荐系统、权限管理、知识图谱等。
2.非关系型数据库(NoSQL):
- 能够存储海量数据,并为大数据分析提供支持,帮助筛选出有价值的信息。
- NoSQL数据库不强制要求数据具有固定的结构,适合处理各种类型的非结构化数据。
3.Not Only SQL (NoSQL):
- 不仅仅是一个数据库,还可以用来缓存数据。
- 键值对存储是NoSQL的一种常见方式,其中"键"是变量名,"值"是对应的变量值。
4.Redis的持久化方式:
- Redis 作为键值对存储数据库,数据保存在内存中,但会定期将数据写入磁盘以实现持久化。
- 持久化方式确保了即使在服务器重启或故障时,数据也不会丢失。
5.高德实时分析平台:
- 使用非关系型数据库存储数据,以应对海量数据的需求。
- 如果需要持久化数据,可以选择使用Redis来实现数据持久化。
6.MySQL数据库
6.1基本信息
- 产品性质:MySQL 是一款开源的关系型数据库管理系统。
- 隶属:MySQL 目前由 Oracle 公司维护和开发。
- 许可协议:MySQL 遵循 GPL(GNU General Public License)协议,这意味着它可以免费使用和修改。
6.2主要特点
- 高性能和稳定性 :
- MySQL 以其卓越的性能和服务稳定性著称,适用于各种规模的应用,从小型网站到大型企业级系统。
- 开源和低成本 :
- 作为开源软件,MySQL 没有版权限制,可以自由下载、使用和修改,这大大降低了使用成本。
- 多线程、多用户支持 :
- MySQL 支持多线程和多用户环境,这使得它可以处理并发的数据库操作,满足复杂应用的需求。
- C/S 架构 :
- MySQL 基于 C/S(客户端/服务器)架构,客户端应用程序可以通过网络与 MySQL 服务器通信,执行数据库操作。
- 安全可靠 :
- MySQL 提供了多种安全机制,如用户权限管理、加密连接等,确保数据的安全性和可靠性。
- 广泛应用 :
- 由于其易用性、性能和低成本,MySQL 被广泛应用于 Web 开发、数据分析、电子商务、内容管理系统(CMS)等领域。
6.3MySQL 商业版和MySQL 社区版
1.MySQL 社区版
- 开源免费:MySQL 社区版是完全开源和免费的,遵循 GPL 许可证。
- 功能丰富:提供了大多数企业所需的核心功能,包括事务处理、存储引擎(如 InnoDB)、全文搜索和复制功能。
- 社区支持:社区版主要依赖 MySQL 用户社区的支持,提供免费资源和论坛,但没有正式的技术支持。
2.MySQL 商业版
- 商业许可:MySQL 商业版需要购买许可,通常适用于需要附加功能和服务的企业。
- 附加功能:商业版提供了社区版没有的一些企业级功能,例如企业管理工具、数据加密、备份和恢复等增强功能。
- 技术支持:购买 MySQL 商业版的用户可以获得 Oracle 的专业技术支持和服务,包括24/7的支持和紧急修复等。
6.4MySQL 商业版与社区版的区别
1. 许可与成本:
- 社区版:完全开源且免费,遵循 GPL 许可证,适合个人开发者、中小企业及预算有限的项目。
- 商业版:需要购买商业许可证,适合需要企业级功能和技术支持的大型企业或关键任务应用。
2. 功能:
- 社区版:提供核心的 MySQL 功能,包括事务处理、InnoDB 存储引擎、复制、全文搜索等,但不包括某些高级企业功能。
- 商业版:除了社区版的所有功能外,还提供额外的企业级功能,如数据加密、在线备份和恢复、企业管理工具、安全增强功能等。
3. 技术支持:
- 社区版:主要依靠社区支持,通过在线论坛、文档和社区资源获得帮助,没有官方的技术支持。
- 商业版:由 Oracle 提供专业的技术支持,包括24/7全天候支持、紧急补丁、咨询服务等,适合对服务和支持有较高要求的企业。
4. 更新与补丁:
- 社区版:更新和补丁主要由社区贡献和维护,可能在某些情况下响应速度较慢。
- 商业版:由 Oracle 提供更快速和定期的更新与补丁,确保企业客户能够及时获得安全和性能改进。
5. 用途与定位:
- 社区版:适用于个人项目、小型到中型应用程序、学习和开发环境。
- 商业版:专为企业级应用程序设计,适用于高可用性、高安全性和高性能要求的生产环境。
6.5MySQL产品
- 第一阵营: 版本 5.0-5.1,是早期产品的延续。
- 第二阵营: 版本 5.4-5.7,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,提高性能。
- 第三阵营: 版本 6.0-7.1,是MySQL Cluster版本,为适应新时代对数据库的集群需求而开发。
产品下载网址:
四,MySQL安装方法
方法一,yum下载
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-server
systemctl start mysqld
systemctl status mysqld
grep 'temporary password' /var/log/mysqld.log
2024-08-27T17:20:56.306707Z 1 [Note] A temporary password is generated for root@localhost: 8:fnffTss;&A
mysql -u root -p
输入密码
8:fnffTss;&A
遇下面这个情况
手动导入 MySQL GPG 公钥 , 再次运行安装命令
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install -y mysql-server
方法二,编译安装MySQL
步骤 1: 安装必要的依赖项
在 CentOS 7 上,首先确保你拥有所有必要的构建工具和依赖项:
sudo yum groupinstall 'Development Tools' -y
sudo yum install cmake ncurses-devel bison openssl-devel -y
步骤 2: 下载 MySQL 5.7.20 源代码
从 MySQL 官方网站下载 MySQL 5.7.20 的源代码压缩包,或者使用 wget
命令直接下载:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
下载完成后,解压缩文件:
tar -zxvf mysql-5.7.20.tar.gz
cd mysql-5.7.20
步骤 3: 配置编译选项
使用 cmake
配置 MySQL 的编译选项。
vim /etc/
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_TCP_PORT=3306
步骤 4: 编译和安装 MySQL
配置完成后,使用 make
命令开始编译安装 MySQL:
make -j 2 && make install
步骤 5: 创建 MySQL 用户和组
为了安全性,MySQL 通常以专门的 mysql
用户和组身份运行:
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
步骤 6: 设置目录权限
将 MySQL 的安装目录和数据目录的所有权设置为 mysql
用户和组:
chown -R mysql:mysql /usr/local/mysql
步骤 7: 初始化数据库
初始化 MySQL 数据目录,并创建系统表:
bin/mysqld --initialize --user=mysql
初始化完成后,MySQL 会生成一个临时的 root 密码,请记下该密码,稍后将需要它。
步骤 8: 设置 MySQL 配置文件
创建 MySQL 配置文件 /etc/my.cnf
,配置文件的基本内容如下:
vim /etc/my.cnf
[client]
port=3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
port=3306
socket=/usr/local/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/mysql.pid
user=mysql
symbolic-links=0
log-error=/usr/local/mysql/mysql-error.log
保存并退出。
步骤 9: 设置 MySQL 服务
将 MySQL 服务脚本复制到 /etc/init.d/
,并设置 MySQL 为系统服务:
cp support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
步骤 10: 启动 MySQL 服务
启动 MySQL 服务,并设置开机自启动:
baservice mysql start
chkconfig mysql on
步骤 11: 配置环境变量
将 MySQL 的 bin
目录添加到系统的 PATH 变量中,以便在命令行直接使用 mysql
命令:
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
步骤 12: 安全配置
运行 mysql_secure_installation
脚本,来完成初步的安全设置:
/usr/local/mysql/bin/mysql_secure_installation
你会被要求输入之前生成的临时 root 密码,并可以设置新密码,删除匿名用户,禁用远程 root 登录等。
步骤 13: 登录 MySQL
使用你设置的 root 密码登录 MySQL:
mysql -u root -p
方法三,二进制安装
1. 下载 MySQL 8.0.35 二进制包
首先,下载 MySQL 8.0.35 的二进制包。可以从 MySQL 官方下载页面 下载 MySQL 8.0.35 的 tar.gz 文件。
使用 wget
命令下载:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz
2. 解压二进制包
下载完成后,将文件解压到适当的目录,比如 /usr/local/mysql
:
mkdir -p /usr/local/mysql
tar -xvf mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql --strip-components=1
3. 创建 MySQL 用户和组
为了安全起见,建议创建一个专门的 MySQL 用户和组:
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
4. 设置目录权限
为 MySQL 数据目录设置适当的权限:
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql
5. 初始化 MySQL 数据目录
使用 mysqld
命令初始化数据目录:
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
这个命令将初始化数据目录并生成一个临时的 root 密码,可以在输出的日志中找到。
6. 配置 MySQL
创建 MySQL 配置文件 /etc/my.cnf
并添加以下内容:
vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /usr/local/mysql/mysql.sock
user = mysql
log-error = /usr/local/mysql/mysql-error.log
pid-file = /usr/local/mysql/mysql.pid
7. 设置环境变量
为了便于使用 MySQL 命令,将 MySQL 二进制目录添加到系统的 PATH
中。你可以编辑 /etc/profile
文件,添加以下内容:
export PATH=/usr/local/mysql/bin:$PATH
然后执行以下命令使更改生效:
source /etc/profile
8. 启动 MySQL 服务
使用以下命令启动 MySQL 服务器:
/usr/local/mysql/bin/mysqld_safe --user=mysql &
9. 设置 MySQL 开机启动
你可以将 MySQL 设置为系统服务,确保其在系统启动时自动启动。
首先,将 MySQL 的启动脚本复制到 /etc/init.d/
:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
然后,使用以下命令来添加 MySQL 到系统启动项:
chkconfig --add mysql
chkconfig --level 345 mysql on
10. 登录并配置 MySQL
使用初始化时生成的临时 root 密码登录 MySQL:
mysql -u root -p
登录后,你可以根据提示修改 root 密码,并进行其他安全设置。
11. 运行 MySQL 安全配置脚本
建议运行 MySQL 提供的安全配置脚本以增强安全性:
/usr/local/mysql/bin/mysql_secure_installation