第1章 认识MySQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 第1章 认识MySQL

1.1 MySQL的客户端/服务器架构

以微信为例,该应用由两部分组成,一部分是客户端程序,一部分是服务器程序。客户端可能有很多种形式,比如手机APP,电脑软件或者是网页版微信,每个客户端都有一个唯一的用户名,就是你的微信号,另一方面,腾讯公司在他们的机房里运行着一个服务器软件,我们平时操作微信其实都是用客户端来和这个服务器来打交道。


发送消息过程是这样的:


1.消息被客户端包装,添加了发送者和接受者信息,然后从微信客户端传递到微信服务器。


2.微信服务器从消息里获取到它的发送者和接受者,根据消息的接收者信息把这条信息送到另一个人的微信客户端。


MySQL是一样的,服务器程序是直接和存储的数据打交道,然后可以有好多客户端程序连接到这个服务器程序,发送增删改查的请求,然后服务器就响应这些请求,从而操作它维护的数据。


日常使用MySQL的情景是这样的:


1. 启动 MySQL 服务器程序。


2. 启动 MySQL 客户端程序并连接到服务器程序。


3. 在客户端程序中输入一些命令语句作为请求发送到服务器程序,服务器程序收到这些请求后,会根据请求的内容来操作具体的数据并向客户端返回操作结果。


计算机上可以运行很多程序,每一个运行着的程序叫一个进程。我们的 MySQL 服务器程序和客户端程序本质上都算是计算机上的一个 进程 ,这个代表着 MySQL 服务器程序的进程也被称为 MySQL数据库实例 ,简称 数据库实例 。


每个进程都有一个唯一的编号,称为 进程ID ,英文名叫 PID ,这个编号是在我们启动程序的时候由操作系统随机分配的,操作系统会保证在某一时刻同一台机器上的进程号不重复。比如你打开了计算机中的QQ程序,那么操作系统会为它分配一个唯一的进程号,如果你把这个程序关掉了,那操作系统就会把这个进程号回收,之后可能会重新分配给别的进程。当我们下一次再启动 QQ程序的时候分配的就可能是另一个编号。每个进程都有一个名称,这个名称是编写程序的人自己定义的,比如我们启动的 MySQL 服务器进程的默认名称为 mysqld , 而我们常用的 MySQL 客户端进程的默认名称为 mysql 。

1.2 MySQL安装

1.2.1 bin目录下的可执行文件

在 MySQL 的安装目录下有一个特别特别重要的 bin 目录,这个目录下存放着许多可执行文件。Windows 中的可执行文件都是以 .exe 为扩展名的。这些可执行文件都是与服务器程序和客户端程序相关的。


使用可执行文件的相对/绝对路径 假设我们现在所处的工作目录是 MySQL 的安装目录,也就是 /usr/local/mysql ,我们想启动 bin 目录下的 mysqld 这个可执行文件,可以使用相对路径来启动:


./bin/mysqld


或者直接输入 mysqld 的绝对路径也可以: /usr/local/mysql/bin/mysqld


将该 bin 目录的路径加入到环境变量 PATH 中


如果我们觉得每次执行一个文件都要输入一串长长的路径名贼麻烦的话,可以把该 bin 目录所在的路径添加到环境变量 PATH 中。环境变量 PATH 是一系列路径的集合,各个路径之间使用冒号 : 隔离开。

1.3 启动MySQL服务

1.3.1 UNIX里启动服务器程序器程序

在类 UNIX 系统中用来启动 MySQL 服务器程序的可执行文件有很多,大多在 MySQL 安装目录的 bin 目录下。

1.3.1.1 mysqldmysqld

这个可执行文件就代表着 MySQL 服务器程序,运行这个可执行文件就可以直接启动一个服务器进程。

1.3.1.2 mysqld_safemysqld_safe

是一个启动脚本,它会间接的调用 mysqld ,而且还顺便启动了另外一个监控进程,这个监控进程在服务器进程挂了的时候,可以帮助重启它。另外,使用 mysqld_safe 启动服务器程序时,它会将服务器程序的出错信息和其他诊断信息重定向到某个文件中,产生出错日志,这样可以方便我们找出发生错误的原因。

1.3.1.3 mysql.server

mysql.server 也是一个启动脚本,它会间接的调用 mysqld_safe ,在调用 mysql.server 时在后边指定 start参数就可以启动服务器程序了,就像这样:

mysql.server start

需要注意的是,这个 mysql.server 文件其实是一个链接文件,它的实际文件是 ../support-files/mysql.server。

另外,我们还可以使用 mysql.server 命令来关闭正在运行的服务器程序,只要把 start 参数换成 stop 就好了:

mysql.server stop

1.3.1.4 mysqld_multi

其实我们一台计算机上也可以运行多个服务器实例,也就是运行多个 MySQL 服务器进程。 mysql_multi 可执行文件可以对每一个服务器进程的启动或停止进行监控。

1.3.2 Windows里启动服务器程序

1.3.2.1 mysqld

在 MySQL 安装目录下的 bin 目录下有一个 mysqld 可执行文件,在命令行里输入 mysqld ,或者直接双击运行它就算启动了 MySQL 服务器程序了。

1.3.2.2 以服务的方式运行服务器程序

把某个程序注册为 Windows 服务,如下:

"完整的可执行文件路径" --install [-manual] [服务名]

其中的 -manual 可以省略,加上它的话表示在 Windows 系统启动的时候不自动启动该服务,否则会自动启动。服务名也可以省略,默认的服务名就是 MySQL 。

在把 mysqld 注册为 Windows 服务之后,我们就可以通过下边这个命令来启动 MySQL 服务器程序了:

net start MySQL

关闭就是把start换成stop。

net stop MySQL
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
SQL 安全 测试技术
安全测试----使用Docker搭建SQL注入安全测试平台sqli-labs
安全测试----使用Docker搭建SQL注入安全测试平台sqli-labs
984 0
安全测试----使用Docker搭建SQL注入安全测试平台sqli-labs
|
5月前
|
消息中间件 搜索推荐 调度
RocketMQ实战—8.营销系统业务和方案介绍
本文详细介绍了电商营销系统的业务流程、技术架构及挑战解决方案。涵盖核心交易与支付后履约流程,优惠券和促销活动的发券、领券、用券、销券机制,以及会员与推送的数据库设计。技术架构基于Nacos服务注册中心、Dubbo RPC框架、RocketMQ消息中间件和XXLJob分布式调度工具,实现系统间高效通信与任务管理。针对千万级用户量下的推送和发券场景,提出异步化、分片处理与惰性发券等优化方案,解决高并发压力。同时,通过RocketMQ实现系统解耦,提升扩展性,并利用XXLJob完成爆款商品推荐的分布式调度推送。整体设计确保系统在大规模用户场景下的性能与稳定性。
RocketMQ实战—8.营销系统业务和方案介绍
扫描工具 -- Nuclei
扫描工具 -- Nuclei
1448 0
扫描工具 -- Nuclei
|
10月前
|
编译器 Go C语言
Zig 基本语法
Zig 基本语法
192 3
|
7月前
|
关系型数据库 分布式数据库 数据安全/隐私保护
PolarDB 开源基础教程系列 5 高级特性体验
PolarDB 特性解读与体验涵盖多项关键技术,包括预读/预扩展、Shared Server(建议使用连接池)、闪回表和闪回日志、弹性跨机并行查询(ePQ)及TDE透明数据加密。预读/预扩展通过批量I/O操作显著提升Vacuum、SeqScan等场景性能;Shared Server优化高并发短连接处理;闪回功能可恢复表至指定时间点;ePQ支持跨机并行查询以提高复杂查询效率;TDE确保数据存储层的安全加密。
192 3
|
监控 iOS开发
iOS 逆向编程(十八)Reveal 详细安装(以及安装问题解决)(下)
iOS 逆向编程(十八)Reveal 详细安装(以及安装问题解决)(下)
469 0
|
11月前
|
存储 安全 算法
MiniOS 3.3.4 发布,新功能有这些!
【10月更文挑战第19天】
344 0
MiniOS 3.3.4 发布,新功能有这些!
|
11月前
|
物联网 vr&ar Android开发
掌握安卓与iOS应用开发:核心技术与未来趋势
本文深入探讨了安卓和iOS应用开发的核心技术,包括开发环境、主要编程语言、常用框架以及性能优化技巧。同时,文章还展望了两大平台未来的发展趋势,如人工智能、增强现实和物联网的集成,为开发者提供全面的技术参考和发展指引。
|
机器学习/深度学习 人工智能 计算机视觉
深度学习之ResNet家族
ResNet是深度学习中的标志性架构,由何恺明在2016年提出,解决了深度网络训练的难题。ResNet通过残差块使得网络能有效学习,即使层数极深。后续发展包括ResNetV2,优化了信息传递和激活函数顺序;Wide Residual Networks侧重增加网络宽度而非深度;ResNeXt引入基数概念,通过多路径学习增强表示能力;Stochastic Depth通过随机丢弃层加速训练并提升泛化;DenseNet采用密集连接,增加信息交互;DPN结合ResNet和DenseNet优点;ResNeSt则综合了注意力机制、多路学习等。这些演变不断推动深度学习网络性能的提升。5月更文挑战第7天
594 7
|
监控 Linux 数据处理
深入了解Linux的logger命令:日志记录与监控
`logger`命令在Linux中用于向系统日志发送消息,便于记录系统事件和应用程序状态。它与`syslogd`配合,允许用户指定优先级、标识符和内容。简单易用,灵活适应不同日志需求。示例:`logger -p user.warning -t MYAPP "A warning occurred."`。注意选择合适优先级,使用有意义的标识符,并结合其他工具如`logrotate`进行日志管理。