标题: MySQL 基础介绍 [打印本页] 作者: 花瓣小跑 时间: 2024-1-6 20:23 标题: MySQL 基础介绍 MySQL介绍
相关概念
DB(DataBase)数据库。是一个存储数据的容器
DBA(Database Administrator):数据库管理员。负责数据库的管理和维护的专业人员
DBMS(Database Management System):数据库管理系统。是一种软件,用于创建和管理数据库。
App(Application):应用程序。执行特定任务或一系列任务的软件程序
DBA使用DBMS管理DB,DBMS提供了访问和操作数据库的接口,App通过DBMS的接口访问DB,在这个过程中DBA需要确保App能高效、安全地访问DB。
MySQL 发展历史
MySQL 的第一个版本在 1996 年发布,命名方式是以其创始人 Michael Widenius 的女儿 My 命名。最初在 2008 年MySQL被 Sun Microsystems 收购。2010 年,甲骨文公司(Oracle)收购了 Sun Microsystems,从而也获得了 MySQL。甲骨文公司收购 Sun Microsystems(包括 MySQL)后,社区对 MySQL 未来可能闭源的担忧加剧,尽管到目前为止,MySQL 仍然是开源的。
所以MySQL的创始人Michael Widenius 基于MySQL5.5 创建了 MariaDB,这是为了确保有一个持续开源的分支。MariaDB 的名字是以他的另一位女儿 Maria 命名,MariaDB 旨在完全兼容 MySQL,包括 API 和命令行,确实使其成为 MySQL 的一个直接替代品。MariaDB 致力于保持与 MySQL 的兼容性,同时也引入了一些新的特性和改进。
虽然MariaDB 最初是基于 MySQL 5.5 版本开发的。MariaDB 的首个版本是 MariaDB 5.1,它在很大程度上与 MySQL 5.1 相同,但包括了一些额外的特性和改进,这些在 MySQL 中并不存在。随着时间的推移,MariaDB 开始引入更多的独立特性和改进,逐渐与 MySQL 的后续版本产生更多的差异。
MySQL 三大分支
Oracle MySQL
由 Oracle Corporation 维护的官方 MySQL 分支。在 Oracle 收购 Sun 公司后,Oracle MySQL 成为了最官方的 MySQL 版本。它提供社区版和企业版,其中企业版含有一些额外的特性和支持。
官网:https://www.mysql.com/
MariaDB
MariaDB 是 MySQL 的一个流行分支,由 MySQL 的原始开发者之一 Michael Widenius 创建。它致力于保持与 MySQL 的兼容性,同时加入了一些新的特性和改进。MariaDB 被设计为 MySQL 的直接替代品,且许多 Linux 发行版已经将 MariaDB 作为默认的数据库系统。
官网:https://mariadb.org/
Percona Server
Percona Server 是另一个流行的 MySQL 分支,由 Percona LLC 维护。它与 Oracle MySQL 和 MariaDB 都高度兼容,但专注于提供更高的性能和可靠性,特别适合高负载的生产环境。Percona Server 提供了一些独特的性能优化和特性,这些在标准 MySQL 中并不可用。
官网:https://www.percona.com/
MySQL 特点说明
MySQL 架构
MySQL是基于C/S架构开发而来,由客户端和服务端组成。 服务端: 它负责存储数据、处理数据操作请求(如查询、更新、删除等),并维护数据的完整性和安全性。 客户端: 以是任何用于与 MySQL 服务器交互的软件。这包括命令行客户端(如 mysql 命令行工具)、图形界面工具,或者通过数据库连接库(如 JDBC, ODBC)集成在各种应用程序中的客户端。
MySQL 账号
在MySQL中,账号是由两部分组成的,即用户名和主机名字,通过 @ 符号分隔用户名和主机名
user_name@host_name
复制代码
通过主机名限制此用户可通过哪些远程主机连接mysql服务器,在创建用户或者给用户授权时,通常需要使用引号将用户名和主机名括起来,尤其是在用户名或主机名包含特殊字符或是保留字,用于确保 MySQL 正确解析这些字符串
在给MySQL账号指定主机名的时候,主机名可以指定为一个具体的IP地址也可以通过通配符来指定一个网段或者其它。(标准SQL常用的两个通配符 _ 和 % 它都是支持的) 例如:
该命令在 MySQL 中用于重新加载授权表(即用户和权限相关的表),以便立即应用对这些表所做的任何更改。当直接修改 MySQL 的授权表,如 mysql.user、mysql.db 等来更改用户权限或添加新用户时,这些更改不会立即生效。FLUSH PRIVILEGES 命令强制 MySQL 服务器重新读取授权表,使更改立即生效。
基于标准SQL的扩展
update mysql.user set password=password('123456') where User="xxx" and Host = "xxx";
set password for xxx@xxx = password('xxx');
复制代码
MySQL 5.7 版本及其以上
从 MySQL 5.7 开始,推荐使用 ALTER USER 命令来修改密码。这是因为 MySQL 5.7 做了很多安全性方面的改进,包括如何处理密码。
ALTER USER 'username'@'hostname' IDENTIFIED BY 'newpassword';
复制代码
例如:
alter user ehigh@'localhost' identified by 'eHIGH2014'
复制代码
MySQL 服务端
查看版本信息
除了使用一些客户端工具可以查看版本信息外,还可以直接用mysqld的-V参数来查看版本信息
mysqld -V
复制代码
[img=45%,45%]https://img2023.cnblogs.com/blog/1519088/202311/1519088-20231122175258063-1509090608.png[/img]使用 mysqld --verbose --help | less 可以查看mysqld的更多选项信息,mysqld是mysql服务端的主程序。
MySQL 默认数据库
在安装好MySQL服务端后,会默认提供四个数据库。
information_schema:MySQL 5.0之后增加,一个虚拟数据库(存在于内存中)且只读,包含了 MySQL 服务器的元数据,如数据库、表、列、索引等的信息。
performance_schema:MySQL 5.5开始新增的数据库,存储了关于 MySQL 服务器性能的详细数据,包括各种性能指标和内部执行统计信息。
mysql:MySQL的核心数据库,存储了数据库的用户账户、权限、系统配置等关键数据。
sys 数据库:MySQL5.7之后新增,提供了一个更易于理解和使用的视图层,以访问和解释 performance_schema 数据。它旨在简化数据库管理员对性能数据的查询和分析。 例如: 如果我们要备份一个数据库中的用户信息,备份mysql这个数据库就行了。
服务端组成
初始化数据的时候有以下注意点:
1、需要确保MySQL的数据目录是空的,即里面没有任何内容,否则可能没法初始化成功
2、需要确保MySQL服务的进行是停止状态,不然只会再数据目录生成部分文件。例如:只会生成一个auto.conf文件
3、需要确保MyQL配置文件中的innodb_force_recovery选项不是启用状态
4、用户必须有足够的权限来创建、写入和修改MySQL的数据目录中的文件和子目录,所以可以用root用户身份来执行,如果不成功就用mysql用户来下执行。sudo -u mysql mysqld --initialize-insecure
MySQL 客户端
MySQL 是一个基于客户端-服务器(C/S)架构的数据库管理系统。在这种架构中,数据存储和管理由位于服务器端的 MySQL 数据库服务器负责。要对这些数据进行管理或执行操作,需要通过客户端应用程序连接到 MySQL 服务器。
1、客户端工具通过网络(使用 TCP/IP 协议)或本地 socket 套接字连接到 MySQL 服务器。这个连接过程涉及到认证和授权,确保只有拥有适当凭证的用户才能访问数据库。
2、建立连接后,客户端可以发送SQL命令到服务端进行数据管理,在MySQL中,有很多SQL方言或者对标准SQL的一些扩展命令。
3、服务端接收到客户端的请求后,进行相应的响应。
客户端可以是多种形式,例如命令行工具(如 mysql 客户端)、图形用户界面工具(如 MySQL Workbench)、程序语言中的数据库连接库(如 Java 中的 JDBC)等。这些客户端提供了与 MySQL 服务器交互的不同方式和界面。
mysql