MySQL基础篇-概述
MySQL学习相关笔记:https://www.letianbiji.com/mysql/
MySQL 8.0官方文档:https://dev.mysql.com/doc/refman/8.0/en/
在这一章节,主要介绍两个部分,数据库相关概念及MySQL数据库的介绍、下载、安装、启动及连接。
一、数据库相关概念
在这一部分,我们先来讲解三个概念:数据库、数据库管理系统、SQL。
名称 |
全称 |
简称 |
数据库 |
存储数据的仓库,数据是有组织的进行存储 |
DataBase(DB) |
数据库管理系统 |
操纵和管理数据库的大型软件 |
DataBase Management System (DBMS) |
SQL |
操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 |
Structured Query Language (SQL) |
而目前主流的关系型数据库管理系统的市场占有率排名如下:
- Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。
- MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。
- 目前Oracle推出了收费版本的MySQL,也提供了免费的社区版本。SQL Server:Microsoft 公司推出的收费的中型数据库,C#、.net等语言常用。
- PostgreSQL:开源免费的中小型数据库。
- DB2:IBM公司的大型收费数据库产品。
- SQLLite:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
- MariaDB:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与MySQL数据库有很好的兼容性。
而不论我们使用的是上面的哪一个关系型数据库,最终在操作时,都是使用SQL语言来进行统一操作,因为我们前面讲到SQL语言,是操作关系型数据库的 统一标准 。所以即使我们现在学习的是MySQL,假如我们以后到了公司,使用的是别的关系型数据库,如:Oracle、DB2、SQLServer,也完全不用担心,因为操作的方式都是一致的。
二、MySQL数据库
1. 版本介绍
MySQL官方提供了两种不同的版本:
- 社区版本(MySQL Community Server)
免费, MySQL不提供任何技术支持
- 商业版本(MySQL Enterprise Edition)
收费,可以使用30天,官方提供技术支持
本次我们选择下载MySQL Community Server 8.0.26
版本。
2. 软件下载
下载地址:https://dev.mysql.com/downloads/windows/installer/8.0.html
3. 安装包方式安装-Windows版
(1)双击官方下来的安装包文件
(2)根据安装提示进行安装
注意:第一种方式Developer Default默认安装到C盘,C:\Program Files\MySQL\MySQL Server 8.0\,这里选择Custom自定义安装。
选择产品窗口,可以定制需要安装的产品清单。例如,选择“MySQL Server 8.0.26-X64”后,单击“→”添加按钮,即可选择安装MySQL服务器,如图所示。采用通用的方法,可以添加其他你需要安装的产品。
此时如果直接“Next”(下一步),则产品的安装路径是默认的。如果想要自定义安装目录,则可以选中对应的产品,然后在下面会出现“Advanced Options”(高级选项)的超链接。
上面为默认安装界面,ProgramData目录(这是一个隐藏目录),如果没显示,需要到此电脑中的查看中勾选隐藏项目项。如果自定义安装目录,请避免“中文”目录。另外,建议服务目录和数据目录分开存放。
此时如果直接“Next”(下一步),则产品的安装路径是默认的。如果想要自定义安装目录,则可以选中 对应的产品,然后在下面会出现“Advanced Options”(高级选项)的超链接。
安装MySQL的相关组件,这个过程可能需要耗时几分钟,耐心等待。
第一个选项:
使用强密码加密进行身份验证,采用SHA256基础的密码加密方法(已升级)
第二个选项:
使用传统身份验证方法(保留MySQL 5.x兼容性)
如果我们选择了强密码加密进行身份验证,虽然MySQL采用了强密码加密,但是我们的图形化管理软件(SQLyog、Navicat等)却没有采用强密码加密,这回直接导致SQLyog访问不了我们的MySQL,所以这里我们要选择传统的加密方法。
设置MySQL中root用户的密码,两次一致。一定记住该密码,这里为了方便设置为123456
设置服务器名称窗口,如图所示。该服务名会出现在Windows服务列表中,也可以在命令行窗口中使用该服务名进行启动和停止服务。
如果希望开机自启动服务,也可以勾选“Start the MySQL Server at System Startup”选项(推荐)。
下面是选择以什么方式运行服务?可以选择“Standard System Account”(标准系统用户)或者“Custom User” (自定义用户)中的一个。这里推荐前者。
(3)配置
安装好MySQL之后,还需要配置环境变量,这样才可以在任何目录下连接MySQL。
A. 在此电脑上,右键选择属性
B. 点击左侧的 "高级系统设置",选择环境变量
C. 找到 Path 系统变量, 点击 "编辑"
D. 选择 "新建" , 将MySQL Server的安装目录下的bin目录添加到环境变量
4. 启动停止服务
MySQL安装完成之后,在系统启动时,会自动启动MySQL服务(cmd:services.msc),我们无需手动启动了。
当然,也可以手动的通过指令启动停止,以管理员身份运行cmd,进入命令行执行如下指令:
# 启动mysql80服务 net start mysql80 # 停止mysql80服务 net stop mysql80
以管理员方式运行:windows搜索cmd-右键-(更多)-以管理员身份运行。
注意 : 上述的 mysql80 是我们在安装MySQL时,默认指定的mysql的系统服务名,不是固定的,如果未改动,默认就是mysql80。
5. 客户端连接测试
(1)方式一:使用MySQL提供的客户端命令行工具
这里要先以管理员身份运行cmd,启动MySQL服务后,再输入密码连接数据库。
(2)方式二:使用系统自带的命令行工具执行指令
mysql [-h 127.0.0.1] [-P 3306] -u root -p 参数: -h : MySQL服务所在的主机IP -P : MySQL服务端口号, 默认3306 -u : MySQL数据库用户名 -p : MySQL数据库用户名对应的密码 []内为可选参数,如果需要连接远程的MySQL,需要加上这两个参数来指定远程主机IP、端口,如果 连接本地的MySQL,则无需指定这两个参数。
注意: 使用这种方式进行连接时,需要安装完毕后配置PATH环境变量。
6. 卸载-Windows版
(1)停止MySQL服务
win+R 打开运行,输入 services.msc
点击 "确定" 调出系统服务。
(2)卸载MySQL相关组件
打开控制面板 ---> 卸载程序 ---> 卸载MySQL相关所有组件
(3)删除MySQL安装目录
(4)删除MySQL数据目录
默认数据存放目录是在 C:\ProgramData\MySQL
,直接将该文件夹删除。
(5)再次打开服务,查看是否有MySQL卸载残留
如果已将MySQL卸载,但是通过任务管理器 ---> 服务,查看到MySQL服务仍然残留在系统服务里。
解决办法:
- 以管理员方式运行cmd命令行,输入以下命令:
sc delete 服务名称
(如MySQL80)
这样可以实现删除服务。
最后,重启电脑即可生效。
7. 在同一台电脑上安装两个版本的mysql
在C盘和D盘对应的安装目录下都新建文件夹MySQL Server x.x,这里自定义软件安装目录在D盘,数据库中的数据存放在C盘
8. 相关问题补充
(1)MySQL8.0新加密方式连接第三方客户端工具出错问题
除MySQL自带的客户端工具外,我们还可以使用第三方客户端工具。这里介绍一下如何解决当用Navicat Premium连接MySQL数据库时报的2059错误,如下图所示:
这个错误出现的原因是在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password。为解决这个问题,可以将MySQL用户登录的加密规则修改为mysql_native_password,成功连接MySQL数据库服务器后,依次输入如下语句:
对于用户root:
# 使用mysql数据库 use mysql; # 设置密码永不过期 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; # 修改加密规则,并设置新的用户密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; # 刷新权限 FLUSH PRIVILEGES;
对于新创建的用户test:
# 使用mysql数据库 use mysql; # @后的%表示任何主机 ALTER USER 'test'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; # @后的%表示任何主机 ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '新密码'; # 刷新权限 FLUSH PRIVILEGES;
(2)windows下一般使用的my.ini(mysql5.7、zip安装)
[mysql] default-character-set=utf8 [mysqld] port=3306 basedir=D:\\Mysql\\mysql-5.7.31-winx64 datadir=D:\\Mysql\\mysql-5.7.31-winx64\\data character-set-server=utf8 default-storage-engine=INNODB sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
三、数据模型
1. 关系型数据库(RDBMS)
概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
而所谓二维表,指的是由行和列组成的表,如下图(就类似于Excel表格数据,有表头、有列、有行,还可以通过一列关联另外一个表格中的某一列数据)。我们之前提到的MySQL、Oracle、DB2、SQLServer这些都是属于关系型数据库,里面都是基于二维表存储数据的。简单说,基于二维表存储数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库。
特点:
A. 使用表存储数据,格式统一,便于维护。
B. 使用SQL语言操作,标准统一,使用方便。
2. 数据模型
MySQL是关系型数据库,是基于二维表进行数据存储的,具体的结构图下:
- 我们可以通过MySQL客户端连接数据库管理系统DBMS,然后通过DBMS操作数据库。
- 可以使用SQL语句,通过数据库管理系统操作数据库,以及操作数据库中的表结构及数据。
- 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录。