MySQL 简介

什么是MySQL?(熟悉)

MySQL是一个开源的、使用标准SQL语言的、可运行于多个系统的、支持多语言的、支持大型数据库的关系型数据库管理系统。由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。我们通常使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

数据库必知的术语(掌握)

  • 数据库:数据库是一些表或者其它对象的集合。
  • 数据表:表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • :又称为字段。一列数据包含了相同类型的数据,例如邮政编码的数据。
  • :又称为记录。一行数据是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储多份数据,冗余虽然浪费了空间,降低了性能,但提高了数据的安全性。
  • 主键:一个数据表中只能包含一个主键。表中每一行数据(一条记录)的主键是唯一的,你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。其中一个表A的字段取之于表B的主键,那么B的主键称为A的外键。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。

数据表可以简单看做一个Excel表:

  • 表头(header): 每一列的名称;
  • (col): 具有相同数据类型的数据的集合;
  • (row): 每一行用来描述某条记录的具体信息;
  • (value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • (key): 键的值在当前列中具有唯一性。

数据库配置链接中的url的参数含义(熟悉)

url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
url 统一资源定位符
jdbc:mysql 是协议名称 是指JDBC连接方式
localhost:3306 是主机:端口 还可以写作127.0.0.1:3306
test 是数据库名
useSSL=true MySQL在高版本需要指明是否进行SSL连接 在mysql连接字符串url中加入ssl=true或者false即可 SSL
useUnicode=true 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true
characterEncoding 当useUnicode设置为true,给定编码,常用utf8,默认是:autodetect
serverTimezone 设置时区 例如 serverTimezone=UTC(统一标准世界时间)或serverTimezone=Asia/Shanghai(中国时区)
zeroDateTimeBehavior 所有零组件的日期时间处理
allowPublicKeyRetrieval 允许客户端从服务器获取公钥

zeroDateTimeBehavior处理策略,有3种

  • exception(不指定,则默认)---->默认抛出异常,
  • convertToNull------->转化为null
  • round------->替换成最近的日期即XXXX-01-01
    allowPublicKeyRetrieval

设置AllowPublicKeyRetrieval=True参数以允许客户端从服务器获取公钥。

AllowPublicKeyRetrieval=True可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码,所以默认是关闭的,必须显式开启。

问题一

当使用数据库查询第一条数据的时候,发现报了这个Public Key Retrieval is not allowed(不允许检索公钥)。出现这个问题原因是:mysql8以上版本默认使用 sha256_password 认证,密码在传输过程中必须加密保护,如果无法使用 TLS,就需要使用 RSA 公钥加密。

解决办法:设置AllowPublicKeyRetrieval=True即可解决此问题。

问题二

Access denied for user ‘root’@‘172.17.0.1’ (using password: YES)

此异常和问题一一样,从MySQL8.0 开始,默认的验证方式是caching_sha2_password。

你可能感兴趣的:(MySQL,mysql,数据库)