当前位置: 首页 > news >正文

MYSQL笔记4

1.存储引擎
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。

插件式存储引擎是MySQL数据库最重要的特性之一, 用户可以根据应用的需要选择如何存储和索引数据、是否使用事务等

如:
MyISAM:
Mysql 5.5之前的默认数据库引擎,最为常用。
拥有较高的插入,查询速度,但不支持事务应用于以读写操作为主, 很少更新 、删除,并对事务的完整性、 并发性要求不高的情况
InnoDB:
事务型速记的首选引擎,支持ACID事务,支持行级锁定
应用于对事务的完整性要求高,在并发条件下要求数据的一致性的情况。
InnoDB:是MySQL的默认数据库引擎 
MEMORY:
所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。
但是会占用和数据量成正比的内存空间。并且其内容会在MYSQL重新启动是会丢失。
Archive :
非常适合存储大量的独立的,作为历史记录的数据。
因为它们不经常被读取,则拥有高效的插入速度,但其对查询的支持相对较差
Federated :
将不同的 MySQL 服务器联合起来,逻辑上组成一个完整的数据库。
非常适合分布式应用
CSV :
逻辑上由逗号分割数据的存储引擎。
它会在数据库子目录里为每个数据表创建一个 .csv 文件。
这是一种普通文本文件,每个数据行占用一个文本行。
CSV 存储引擎不支持索引。
BlackHole:
黑洞引擎,写入的任何数据都会消失,一般用于记录 binlog 做复制的中继
ERFORMANCE_SCHEMA:
该引擎主要用于收集数据库服务器性能参数。

默认情况下, 创建表不指定表的存储引擎, 则会使用配置文件的my.ini中default-storage-engine=InnoDB指定的InnoDB
查看支持的引擎命令:
show engines \g



1.7MySQL数据库账户及授权
密码策略
从 MySQL 8.0开始,默认身份验证插件从 mysql_native_password 更改 caching_sha2_password
MySQL 5.7 的默认密码插件一直以来都是 mysql_native_password。拥有密码验证快的优点,无需在网络中发送实际密码,并且不需要加密的连接。然而,mysql_native_password 依赖于 SHA1 算法,但NIST(美国国家标准与技术研究院)已建议停止使用 SHA1 算法,因为 SHA1 和其他哈希算法(例如MD5)已被证明非常容易破解



设置密码强度检查参数:
mysql> show variables like 'validate_password.%'; # 查看密码策略
# 设置密码验证强度检查策略

mysql> set global validate_password.policy=low; # 0
# 设置密码长度

mysql> set global validate_password.length=6;
# 设置至少要包含大/小写字母的个数
mysql> set global validate_password.mixed_case_count=0;
# 设置至少要包含数字的个数
mysql> set global validate_password.number_count=6;
# 设置至少包含特殊字符个数
mysql> set global validate_password.special_char_count=0;



若需要永久保存密码设置策略则需要修改配置文件:
建一个文件:
# 文末添加:
validate_password.policy=low
validate_password
.length=6


修改密码:
mysql>
select user, host, plugin from mysql.user; # 查看root用户信息

mysql> alter user 'root'@'localhost' identified by '123456';
# 注意:主机名为localhost,远程主机为%



1.7.2. 登录账户管理
mysql8的账户权限管理原则:先创建账户,在赋予权限
用户信息存放在 mysql数据库下的 user 表
mysql> select user(); # 查看当前的用户信息
mysql> use mysql;
mysql> show tables;
mysql> desc user;
mysql> select user,host,authentication_string from user;
1.7.3. 新建登录账户
格式:create user 'username'@'localhost' identified by 'password';

含义
username: 创建的用户名
localhost: 指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost ,如果想让该用户可以从任意远程主机登陆,可以使用通配符 %
password: 该用户的登陆密码


1.7.4. 账户授权
作用:通过账户权限限制普通账户的工作范围及内容,赋权原则如下:
root账号绝对禁止允许任何IP都可以访问,即登录方式不能用%
应用账号和管理账号要分离
赋权最小化,即一般只给select权限,最好不要给update、insert等编辑权限
密码设置合理
定期清理不使用的账户,将其收回权限或删除

赋权语法:
grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' [identified by '密码'];

分析
权限列表: 用户的操作权限,如 SELECT , INSERT , UPDATE ,CREATE 等,如果要授予所有的权限则使用 ALL
数据库名: 数据库名,如果 * 代表所有数据库
表名:如果 * 代表所有数据表
localhost: 指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost ,如果想让该用户可以从任意远程主机登陆,可以使用通配符 %





回收权限:
格式:
revoke 权限列表/all on 库名.表名 from '用户名'@'来源地址';
# revoke跟grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可



1.7.6. 删除账户
格式:
drop user '用户名'@'访问主机名';


http://www.lryc.cn/news/597843.html

相关文章:

  • 设备虚拟化
  • 不一样的Mysql安装方式
  • 主要科技公司与新创公司 AI Agent 进展调研
  • 【MySQL】MySQL 索引详解
  • 论文笔记:Tuning Language Models by Proxy
  • HDFS写性能优化技巧详解:从理论到实践
  • 1688 商品数据采集的应用行业与接入方式
  • Linux运维新手的修炼手扎之第24天
  • 本地运行C++版StableDiffusion!开源应用StableVerce发布
  • Java并发编程:锁机制
  • C++(面向对象封装、继承、多态)
  • 深度图像滤波
  • UI测试平台TestComplete:高效覆盖风险,加速持续交付
  • 基于python的微博评论和博文文本分析,包括LDA+聚类+词频分析+lstm热度预测,数据量10000条
  • Ubuntu22.04.5 LTS安装与使用Docker
  • Android Camera openCamera
  • 水泥厂码垛环节的协议转换实践:从Modbus TCP到DeviceNet
  • 浙大Fast Lab:融合3D激光雷达与强化学习的「端到端导航」,让无人机“飞”在点云上!
  • 快手DHPS:国内首个实现基于RDMA 通信的可负载均衡高性能服务架构!
  • 基于Springboot的中药商城管理系统/基于javaweb的中药材销售系统
  • Https以及CA证书
  • 代码随想录算法训练营第二十九天
  • 反向传播及优化器
  • 软硬件协同仿真和验证的标准接口协议SCE-MI简介
  • Spring-IoCDI
  • QT的moveToThread 用法
  • 使用Qt下QAudioOutput播放声音
  • Qt 常用控件 - 1
  • iview表单验证一直提示为空的几个原因?
  • DDD领域驱动设计C++实现案例:订单管理系统