关系型数据库:是一种建立在关系模型(数学模型)上的数据库
关系模型:一种所谓建立在关系上的模型.
数据结构:数据存储的问题,二维表(有行和列)
操作指令集合:所有sql语句
完整性约束:表内数据约束(字段与字段),表与表之间约束(外键)
2.关系型数据库的设计
关系型数据库:从需要存储的数据需求中分析,如果是一类数据(实体)应该设计成一张二维表:表与表头(字段名:用来规定
数据的名字)和数据部分组成(实际存储的数据单元)
二维表:行和列
表头 字段名 字段名2
数据单元 数据1 数据2
关系型数据库:维护实体内部,实体与实体之间的联系.
关系型数据库特点:如果表中队友的某个字段没有值(数据),但是系统依然要分配恐惧:关系型数据库比较浪费空间
授权认证:
mysql权限系统的作用是授予来自某个主机的某个用户可以查询,插入,修改,删除等数据库操作的权限
不能明确的指定拒绝某个用户的连接
权限控制(授权与回收)的执行语句包括create user ,grant ,revoke
授权后的权限都会存放在Mysql的内部数据库中(数据库名叫mysql),并在数据库启动之后把权限信息复制到内存中
MySQL用户的认证信息不光包括用户名, 还要包含连接发起的主机
ALL/ALLPrivileges权限代表全局或者全数据库对象基本的所有权限
Alter权限代表允许修改表结构的权限,但必须要求有create和insert权限配。如果是rename表面,则要求有alter和drop原表,create和insert新表的权限
Alter routine权限代表允许修改或者删除存储过程,函数的权限
Create权限代表允许创建新的数据库和表的权限
Delete权限调拨允许删除行数据的权限
Execute权限代表允许执行存储过和函数的权限
Insert 权限代表是否允许在表里插入数据,同时在执行analyze table,optimzetable,repair rable语句的时候也需要insert权限
Update权限代表允许修改表中的数据的权限
系统权限表:
User表:存放用户账户以及全局级别(所有数据库)权限,决定了来自哪些主机的哪些用户可以访问数据库实例
Db表:存放数据库级别的权限,决定了来自哪些主的哪些用户可以访问此数据库
Tables priv表:存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的这这个表
Columns_priv表:存放列级别的权限,决定了来自哪些主的哪些用户可以访问数据库表的这个字段
Procs_priv表:存放存储过程和函数级别的权限
User权限表结构中的特殊字段
Plugin,password,authenticattion_string三个字段存放用户认证信息
password_expired设置成‘Y’则表明允许DBA将此用户的密码设置成过期而且过期后要求用户的使用者重置密码(alter user/ set password重置密码)
Password_last_changed作为一个时间戳字段代表密码上次修改时间,执行create user/alter user/set password/grant等命令创建用户或修改用户密码事此数值自动更新
Password_lifetime代表从password_last_changed时间开始此密码过期的天数
Accout_locked代表此用户被锁住,无法使用
权限认证中的大小写敏感问题
字段user password authencation_string db,table_name 大小写敏感
字段host,column_name,routine_name大小写不敏感
查看用户权限信息
show grant for用户:查看已经授权用户的权限信息
show create user 用户:查看用户的其他非授权信息 也能通过mysql.user查看
MySQL的授权用户由两部分组成:用户名和登录主机名
表达用户的语法为‘user_name’@‘host_name’
单引号不是必须,但如果其中包含特殊字符则是必须的
“@’localhost’代表匿名登录的用户
Host_name可以试主机名或者ipv4/ipv6的地址。Localhost代表本机,127.0.0.1代表ipv4的本机地址,::1代表ipv6的本机地址
Host_name字段允许使用%和_两个匹配字符,比如‘%’代表所有主机,‘%.mysql.com’代表来自mysql.com这个域名下的所有主机,‘192.168.1.%’代表所有来自192.168.1网段的主机