欢迎光临
我们一直在努力

MySQL 数据库基础知识+安装过程

前言

在信息爆炸的时代,数据的存储、管理与检索成为核心需求。数据库技术作为计算机科学的核心分支,能高效、安全地组织海量数据,解决数据冗余、不一致、共享难等问题。MySQL 作为开源的关系型数据库管理系统,凭借轻量、高速、开源的特性,成为中小型项目、Web 开发的主流选择,也是学习数据库技术的入门优选。

一、数据库基础概念

1.1 核心术语

  • 数据:描述事物的符号记录,如数字、文字、图形等,在数据库中以记录(行)和字段(列)的形式结构化存储。
  • 数据库表:存储同类数据的二维结构,是数据库的基本存储单元,由行(记录)和列(字段)组成。
  • 数据库(DB):表的集合,按一定组织方式存储相互关联的数据,同时描述数据间的关系。
  • 数据库管理系统(DBMS):操作和管理数据库的系统软件,如 MySQL、Oracle,提供数据定义、操纵、维护、运行管理等功能。
  • 数据库系统(DBS):硬件 + 操作系统 + 数据库 + DBMS + 应用软件 + 用户(含 DBA)的人机系统,DBA 负责数据库的备份、维护、用户管理等核心工作。

1.2 数据库发展与主流类型

1.2.1 数据库发展三阶段
  • 第一代:网状 / 层次数据库(如 IBM IMS),适合复杂关系,但操作复杂,现已逐步淘汰
  • 第二代:关系数据库(如 MySQL、Oracle、SQL Server),基于二维表,以 SQL 为操作语言,简单易用,目前仍为主流
  • 第三代:面向对象 / 新型数据库(如 MongoDB、Redis),适配多媒体、大数据、分布式等新场景
  • 1.2.2 主流数据库分类

    表格

    类型代表产品特点应用场景
    关系数据库 MySQL、Oracle、SQL Server、DB2 基于二维表,支持 SQL,数据完整性强 企业管理、电商、金融等传统业务
    非关系数据库(NoSQL) Redis、MongoDB、HBase 无固定表结构,高并发、高扩展 大数据、分布式系统、实时交互场景

    1.3 关系数据库核心特性

  • 基本结构:由多个二维表组成,表通过主键和外键建立关联
    • 主键:唯一标识表中记录,值非空且唯一,一个表仅一个主键
    • 外键:关联两个表的字段,引用主表的主键,实现表间的关联查询
  • 数据完整性规则
    • 实体完整性:主键字段不能为空
    • 域完整性:字段值符合预设规则(如性别只能是男 / 女)
    • 引用完整性:外键值必须是主表主键的有效值,不能引用不存在的记录
    • 用户定义完整性:根据业务需求自定义的约束(如年龄范围 18-60)
  • 二、MySQL 安装与配置

    MySQL 是多线程、多用户的开源关系型数据库,目前由 Oracle 维护,支持 LAMP(Linux+Apache+MySQL+PHP)开源架构,是 Web 开发的经典组合。以下介绍源码编译安装(高定制性)和二进制安装(高效便捷)两种方式,均以 MySQL 8.0.36 为例,操作环境为 OpenEuler/CentOS。

    2.1 通用准备工作

    无论哪种安装方式,均需先完成环境初始化,关闭冲突服务、安装依赖、创建专用用户:

    bash

    运行

    # 1. 卸载冲突的MariaDB(若安装)
    rpm -q mariadb && dnf remove mariadb -y

    # 2. 安装基础依赖包
    dnf install -y gcc gcc-c++ make wget net-tools libaio numactl openssl ncurses-compat-libs

    # 3. 创建MySQL专用运行用户(无登录权限)
    groupadd mysql
    useradd -M -s /sbin/nologin mysql -g mysql

    # 4. 关闭SELinux和防火墙(临时+永久)
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    setenforce 0
    systemctl disable –now firewalld

    2.2 源码编译安装(高定制性,适合企业定制化需求)

    源码编译安装可自定义安装路径、字符集、功能模块,适合对 MySQL 功能有特殊要求的场景,需提前安装编译工具cmake和依赖库boost。

    步骤 1:安装编译工具与 boost 库

    bash

    运行

    # 安装cmake编译工具
    tar zxf cmake-3.16.2.tar.gz
    cd cmake-3.16.2
    ./configure && gmake && gmake install

    # 安装boost库(MySQL8.0编译必需,版本对应boost_1_77_0)
    tar -zxf boost_1_77_0.tar.gz
    mv boost_1_77_0 /usr/local/boost

    步骤 2:解压 MySQL 源码并配置编译参数

    bash

    运行

    # 解压源码到/usr/src
    tar zxf mysql-8.0.36.tar.gz -C /usr/src
    cd /usr/src/mysql-8.0.36

    # 创建独立编译目录(防止源码污染)
    mkdir build && cd build

    # 配置编译参数(核心:指定安装路径、字符集、boost路径)
    cmake .. \\
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \\
    -DSYSCONFDIR=/etc \\
    -DMYSQL_DATADIR=/usr/local/mysql/data \\
    -DWITH_SSL=system \\
    -DENABLED_LOCAL_INFILE=ON \\
    -DDEFAULT_CHARSET=utf8 \\
    -DDEFAULT_COLLATION=utf8_general_ci \\
    -DWITH_BOOST=/usr/local/boost \\
    -DWITH_EXTRA_CHARSETS=all

    步骤 3:编译并安装

    bash

    运行

    # 并行编译(-j$(nproc)利用所有CPU核心,提高速度)
    make -j$(nproc)

    # 安装
    make install

    步骤 4:初始化配置

    bash

    运行

    # 1. 创建MySQL配置文件/etc/my.cnf
    vi /etc/my.cnf
    # 写入以下配置
    [client]
    socket=/usr/local/mysql/data/mysql.sock
    [mysqld]
    socket=/usr/local/mysql/data/mysql.sock
    bind-address = 0.0.0.0 # 允许所有IP访问
    skip-name-resolve # 关闭域名解析,提高速度
    port = 3306 # 默认端口
    basedir=/usr/local/mysql # 安装目录
    datadir=/usr/local/mysql/data # 数据目录
    max_connections=2048 # 最大连接数
    character-set-server=utf8 # 服务端字符集
    default-storage-engine=INNODB # 默认存储引擎
    max_allowed_packet=16M # 最大数据包大小

    # 2. 初始化数据库(无密码模式,适合测试)
    /usr/local/mysql/bin/mysqld –initialize-insecure –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data

    # 3. 设置环境变量(任意目录可执行mysql命令)
    echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    source /etc/profile # 立即生效

    步骤 5:添加系统服务并启动

    bash

    运行

    # 复制服务脚本并赋予执行权限
    cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
    chmod +x /etc/rc.d/init.d/mysqld

    # 创建systemd服务文件
    vi /lib/systemd/system/mysqld.service
    # 写入以下内容
    [Unit]
    Description=mysqld
    After=network.target
    [Service]
    Type=forking
    ExecStart=/etc/rc.d/init.d/mysqld start
    ExecReload=/etc/rc.d/init.d/mysqld restart
    ExecStop=/etc/rc.d/init.d/mysqld stop
    PrivateTmp=true
    [Install]
    WantedBy=multi-user.target

    # 重载服务、设置开机自启、启动服务
    systemctl daemon-reload
    systemctl enable mysqld
    systemctl start mysqld

    # 验证服务是否启动(查看3306端口)
    netstat -anpt | grep mysqld

    2.3 二进制安装(高效便捷,适合快速部署)

    二进制安装为预编译包,无需编译,直接解压配置即可,适合快速部署生产 / 测试环境,步骤更简洁。

    步骤 1:解压二进制包并配置目录

    bash

    运行

    # 解压包并移动到指定安装目录
    tar xf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
    mv mysql-8.0.36-linux-glibc2.28-x86_64 /usr/local/mysql

    # 创建数据目录并设置权限
    mkdir /usr/local/mysql/data
    chown -R mysql:mysql /usr/local/mysql

    步骤 2:初始化数据库(生成随机密码,适合生产)

    bash

    运行

    cd /usr/local/mysql/bin
    ./mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data
    # 执行后会生成临时密码,格式如:root@localhost: Xr6:Gg*u8?/8,需记录

    步骤 3:配置文件与环境变量(同源码编译安装)

    bash

    运行

    # 复制并修改配置文件(同2.2步骤4的/etc/my.cnf)
    vi /etc/my.cnf # 内容与源码编译安装一致

    # 设置环境变量
    echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    source /etc/profile

    步骤 4:添加系统服务并启动(同源码编译安装)

    bash

    运行

    cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
    chmod +x /etc/rc.d/init.d/mysqld
    vi /lib/systemd/system/mysqld.service # 内容与源码编译安装一致
    systemctl daemon-reload
    systemctl enable –now mysqld
    netstat -tunlp | grep 3306 # 验证端口

    2.4 补充知识点:两种安装方式对比

    表格

    安装方式优点缺点适用场景
    源码编译 高度定制化,可裁剪功能、优化参数 编译耗时,步骤繁琐,对环境要求高 企业定制化需求、二次开发
    二进制 无需编译,步骤简洁,部署快速 功能固定,无法自定义编译参数 快速部署、测试环境、标准生产环境

    三、MySQL 基础操作

    MySQL 采用 C/S 架构,需通过客户端工具访问服务端,Linux 下最常用的是自带的mysql命令行工具,核心操作包括登录、基础命令、退出。

    3.1 登录 MySQL 服务器

    登录格式:mysql -u 用户名 -p 密码 -h 服务器IP -P 端口,本地登录可省略-h和-P。

    场景 1:无密码登录(源码编译初始化的无密码模式)

    bash

    运行

    mysql -u root -p # 按回车,无需输入密码

    场景 2:使用临时密码登录(二进制安装的随机密码模式)

    bash

    运行

    mysql -u root -p # 输入初始化时生成的临时密码,如Xr6:Gg*u8?/8

    补充:修改 root 密码(首次登录后建议立即修改)

    mysql

    # 登录后执行,将密码修改为pwd123(生产环境建议使用复杂密码)
    alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pwd123';
    flush privileges; # 刷新权限,使修改生效

    3.2 核心基础命令

    登录后进入mysql>提示符环境,所有命令以分号; 结尾,关键字不区分大小写(建议大写)。

    mysql

    # 1. 查看当前所有数据库
    SHOW DATABASES;

    # 2. 创建新数据库(如创建testdb数据库)
    CREATE DATABASE testdb;

    # 3. 使用指定数据库(进入testdb库)
    USE testdb;

    # 4. 查看当前数据库的所有表
    SHOW TABLES;

    # 5. 查看数据库版本
    SELECT VERSION();

    # 6. 查看当前登录用户
    SELECT USER();

    3.3 退出 MySQL 环境

    三种方式均可,效果一致:

    mysql

    # 方式1:EXIT(推荐)
    EXIT;

    # 方式2:QUIT
    QUIT;

    # 方式3:\\q
    \\q;

    3.4 补充知识点:MySQL 服务常用管理命令

    bash

    运行

    # 启动服务
    systemctl start mysqld

    # 停止服务
    systemctl stop mysqld

    # 重启服务
    systemctl restart mysqld

    # 查看服务状态
    systemctl status mysqld

    # 设置开机自启
    systemctl enable mysqld

    # 取消开机自启
    systemctl disable mysqld

    四、MySQL 核心补充知识点

    4.1 MySQL 默认存储引擎 InnoDB

    MySQL 支持多种存储引擎,InnoDB是 8.0 版本的默认存储引擎,相比 MyISAM 等引擎,核心优势:

  • 支持事务(ACID 特性),适合金融、电商等对数据一致性要求高的场景
  • 支持行级锁,高并发场景下性能更优
  • 支持外键约束,保证数据引用完整性
  • 支持崩溃恢复,数据安全性更高
  • 4.2 MySQL 默认端口与安全注意事项

  • 默认端口:3306,可在/etc/my.cnf中修改port参数更改
  • 安全建议:
    • 生产环境不要使用默认端口,避免被暴力扫描
    • root 用户仅允许本地登录,创建普通用户用于远程访问
    • 密码设置为复杂组合(字母 + 数字 + 特殊符号),定期更换
    • 限制访问 IP,在防火墙中仅允许指定 IP 访问 MySQL 端口
  • 4.3 LAMP 架构简介

    LAMP 是 Linux+Apache+MySQL+PHP 的开源 Web 架构,所有组件均为免费开源,是中小型 Web 项目的首选:

    • Linux:操作系统,提供运行环境
    • Apache:Web 服务器,处理 HTTP 请求
    • MySQL:数据库,存储网站数据
    • PHP:服务器端脚本语言,实现动态网页逻辑四者组合可快速搭建稳定、高速的网站系统,无需支付商业软件费用。

    五、总结

  • 数据库是结构化存储数据的核心工具,关系数据库以二维表为基础,通过 SQL 实现数据操作,MySQL 是开源关系数据库的代表。
  • MySQL 主要有源码编译和二进制两种安装方式,分别适用于定制化需求和快速部署场景,安装后需完成初始化、配置、服务添加等步骤。
  • MySQL 的基础操作包括登录、数据库 / 表的基础命令、退出,核心是掌握mysql命令行工具的使用。
  • MySQL 的 InnoDB 存储引擎、主键外键约束、数据完整性规则是其核心特性,也是后续深入学习的基础。
  • 通过本次学习,可完成 MySQL 的环境搭建和基础操作,为后续学习表的创建、数据的增删改查、SQL 语句进阶等内容打下坚实基础。

    赞(0)
    未经允许不得转载:171主机测评 » MySQL 数据库基础知识+安装过程
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址