当前位置:首页 > 技术 > 正文内容

MySQL数据库基础:安装部署、配置管理与核心SQL语法

访客 技术 2026年9月12日 11

数据存储的发展历程

在软件开发早期,数据通常以文本形式分散存储。这种方式存在路径不统一、格式不规范的问题(如 JSON、纯文本混杂)。随着规范化的提出,数据被集中放置在特定目录(如 db 文件夹),但格式标准仍未统一。

现代解决方案引入了数据库服务,实现了路径和操作方式的标准化,显著降低了开发成本并提升了效率。

数据库服务的核心价值

从底层原理看,数据库是一个专门负责数据增删改查(CRUD)的进程;从应用层面看,它提供了可视化的管理界面。无论是单机应用还是网络协同应用,数据库都是数据共享与持久化的基石。为了保证数据安全,生产环境通常会采用集群架构。

数据库的本质与架构

本质上,数据库软件是基于 C/S(客户端/服务端)架构的程序。这意味着开发者可以通过编写代码来实现类似的功能,但在实际工作中,我们主要使用成熟的数据库软件进行管理。

数据库分类详解

关系型数据库 (RDBMS)

此类数据库具有固定的表结构(Schema),包含字段名和预定义的数据类型,类似于 Excel 表格。数据之间可以建立关联关系。

  • 常见产品:MySQL, PostgreSQL, Oracle, SQL Server, SQLite.
  • 特点:事务支持强,数据一致性好。MySQL 因开源免费且性能优异而广泛使用;Oracle 安全性高但成本昂贵;PostgreSQL 兼容性极佳。

非关系型数据库 (NoSQL)

没有固定的表结构,通常采用键值对(Key-Value)或文档形式存储,适合快速读写。

  • 常见产品:Redis, MongoDB, Memcached.
  • 特点:Redis 基于内存,速度极快,常用作缓存;MongoDB 是文档型数据库,适合大数据和爬虫场景。

注:大型系统通常结合两者优势,关系型数据库用于持久化存储,非关系型数据库用于高性能查询。

MySQL 安装与环境配置

版本选择

推荐使用 5.7 或 8.0 版本。学习阶段选择稳定版即可,不同版本在操作上差异不大。

关键目录说明

  • bin: 存放可执行文件(mysqld.exe 服务端,mysql.exe 客户端)。
  • data: 核心数据文件的存储位置。
  • my-default.ini: 默认配置文件模板。
MySQL目录结构

服务启动与管理

手动启动方式

  1. 以管理员身份打开命令提示符,进入 bin 目录。
  2. 运行 mysqld 启动服务端(窗口保持开启)。
  3. 新建普通 CMD 窗口,同样进入 bin 目录,输入 mysql 登录客户端。

默认直接登录为游客模式,权限受限。建议通过指定用户和密码登录:
mysql -u root -p

注册为系统服务

为了实现开机自启,需将 MySQL 注册为 Windows 服务:

# 1. 添加环境变量指向 bin 目录后,关闭所有相关终端
# 2. 以管理员身份运行 CMD,执行安装命令
mysqld --install

# 3. 启动服务
net start mysql

# 4. 卸载服务时,先停止服务
net stop mysql
mysqld --remove
服务注册示意图

密码管理与安全设置

已知原密码时的修改

  • 方法一:退出客户端后,在命令行执行:mysqladmin -u root -p 原密码 password 新密码。
  • 方法二:登录后执行:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码'); (MySQL 5.x) 或 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; (MySQL 8.x)。

忘记 Root 密码的重置方案

当无法获取原密码时,需跳过授权表重启服务:

  1. 停止现有服务:net stop mysql。
  2. 跳过验证启动:mysqld --console --skip-grant-tables --shared-memory(保持窗口开启)。
  3. 另开 CMD 登录:mysql -u root -p(直接回车)。
  4. 刷新权限表并修改密码:
FLUSH PRIVILEGES;
USE mysql;
-- MySQL 5.7
UPDATE user SET authentication_string=PASSWORD("NewPass123!") WHERE User="root";
-- MySQL 8.0+ (authentication_string 加密方式不同)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';

最后正常重启服务即可恢复。

配置文件优化 (my.ini)

在项目根目录或 bin 同级目录下创建 my.ini,可设定端口、编码及数据路径:

[mysqld]
port=3306
basedir=D:/mysql_path
datadir=D:/mysql_data_dir
character-set-server=utf8mb4
default-storage-engine=INNODB

[mysql]
default-character-set=utf8mb4

[client]
port=3306
default-character-set=utf8mb4

核心 SQL 语法基础

与数据库交互必须使用 SQL 语言。基本操作分为库级、表级和记录级。

数据库操作 (Database)

-- 创建数据库,指定字符集避免乱码
CREATE DATABASE my_company DEFAULT CHARSET utf8mb4;

-- 查看所有库
SHOW DATABASES;

-- 切换当前工作库
USE my_company;

-- 删除数据库
DROP DATABASE IF EXISTS test_db;

表结构操作 (Table)

-- 创建员工表
CREATE TABLE staff (
    employee_id INT PRIMARY KEY AUTO_INCREMENT,
    full_name VARCHAR(50) NOT NULL,
    hire_date DATE
);

-- 查看表结构
DESC staff;
SHOW CREATE TABLE staff;

-- 重命名表
ALTER TABLE staff RENAME TO workforce;

-- 删除表
DROP TABLE workforce;

数据记录操作 (Record/Row)

-- 插入数据
INSERT INTO staff (full_name, hire_date) VALUES ('Alice Chen', '2023-01-15');
INSERT INTO staff (full_name, hire_date) VALUES ('Bob Zhang', '2023-02-10'), ('Carol Li', '2023-03-20');

-- 查询数据
SELECT * FROM staff;
SELECT full_name FROM staff WHERE employee_id > 100;

-- 更新数据
UPDATE staff SET hire_date = '2023-01-16' WHERE employee_id = 1;

-- 删除数据
DELETE FROM staff WHERE employee_id = 5;

进程控制指令

在遇到服务卡死等情况时,可通过任务管理器或命令行强制结束进程:

# 列出进程列表
tasklist

# 根据 PID 结束进程
taskkill /PID 12345 /F

# 根据名称结束进程
taskkill /IM mysqld.exe /F

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。