MySQL是广泛使用的关系型数据库管理系统,了解如何创建用户、建库以及选择合适的数据引擎对于数据库管理至关重要。本文将带您深入探索这些概念,并通过生活中的例子帮助您更好地理解。
目录
前言
创建用户
创建用户并设置登陆密码
修改密码
查看用户
host参数值说明:
删除用户
用户授权
参数说明:
用户撤权
示例1:取消用户的某些权限
示例2:取消用户的所有权限
总代码示例
四大数据引擎
MyISAM引擎
InnoDB引擎
Memory引擎
Archive引擎
四大数据引擎的简单对比:
什么是事务?
什么是并发?
什么是行级锁定
什么是表级锁定?
MySQL 在安装时,会默认创建一个名为 root 的用户,该用户拥有超级权限,可以控制整个 MySQL 服务器。
CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1';
SET PASSWORD = PASSWORD ("rootpwd");
MySQL 5.7 版本不再使用 Password 来作为密码的字段,而改成了 authentication_string。
注意:用户的删除不会影响他们之前所创建的表、索引或其他数据库对象,因为 MySQL 并不会记录是谁创建了这些对象。
在 MySQL 中,拥有 GRANT 权限的用户才可以执行 GRANT 语句,其语法格式如下:
priv_type 参数表示权限类型;
columns_list 参数表示权限作用于哪些列上,省略该参数时,表示作用于整个表;
database.table 用于指定权限的级别;
user 参数表示用户账户,由用户名和主机名构成,格式是“'username'@'hostname'”;
IDENTIFIED BY 参数用来为用户设置密码;
password 参数是用户的新密码。
WITH 关键字后面带有一个或多个 with_option 参数。这个参数有 5 个选项,详细介绍如下:
GRANT OPTION:被授权的用户可以将这些权限赋予给别的用户;
MAX_QUERIES_PER_HOUR count:设置每个小时可以允许执行 count 次查询;
MAX_UPDATES_PER_HOUR count:设置每个小时可以允许执行 count 次更新;
MAX_CONNECTIONS_PER_HOUR count:设置每小时可以建立 count 个连接;
MAX_USER_CONNECTIONS count:设置单个用户可以同时具有的 count 个连接。
示例:
MySQL支持多种数据引擎,每种引擎具有不同的特性和适用场景。以下是四大数据引擎及其使用场景的示例代码和解释:
- 特点:MyISAM引擎是MySQL中默认的非事务性存储引擎。它以快速读取和查询为主要目标,并支持全文索引和压缩表格。
- 适用场景:适用于读取频繁、查询频繁的场景,如Web应用日志记录和搜索引擎。
生活比喻:将MyISAM引擎比作一本图书的索引页。索引页提供了便捷的查找和排序功能,适用于需要频繁读取和查询数据的场景。
- 特点:InnoDB引擎是MySQL中的事务性存储引擎,支持行级锁定、外键约束和崩溃恢复功能。它提供高并发性和可靠性。
- 适用场景:适用于需要支持并发访问、事务处理和数据一致性的场景,如电子商务应用和财务系统。
生活比喻:将InnoDB引擎比作一座有强固结构和稳定性的大楼。它适用于需要支持大量并发访问或事务处理的场景,保证数据的一致性和可靠性
- 特点:Memory引擎将数据存储在内存中,提供了快速读写操作的性能,但数据在服务器重启后将会丢失。
- 适用场景:适用于需要快速读写、临时数据和缓存数据的场景,如会话管理和临时表格。
生活比喻:将Memory引擎比作一个临时的便条,用于快速记录和查找信息。它适用于需要快速读取和写入数据的场景,但数据在服务器重启后将会丢失。
- 特点:Archive引擎通过行级压缩和归档存储,提供了高度的数据压缩比。它适用于只需要偶尔查询数据的情况。
- 适用场景:适用于数据存档和大量历史数据的存储,如日志记录和审计数据。
生活比喻:将Archive引擎比作一个压缩文件夹,可以将数据进行压缩存储。它适用于需要在数据量很大的情况下进行存档和查询的场景。
- MyISAM引擎适用于读取和查询频繁的场景,而InnoDB引擎适用于需要事务处理和并发访问的场景。
- Memory引擎适用于快速读写和临时数据的存储,而Archive引擎适用于数据存档和数据压缩的场景。
- MyISAM引擎和Memory引擎没有事务支持,而InnoDB引擎和Archive引擎支持事务处理。
- InnoDB引擎支持行级锁定,可以更好地处理并发访问,而MyISAM引擎只支持表级锁定。
在MySQL中,事务(Transaction)是指一组数据库操作语句的,这些语句要么全部执行成功,要么全部失败回滚。事务具有以下四个特性,通常缩写为ACID:
原子性(Atomicity):事务的所有操作被视为一个不可分割的单位,要么全部成功提交,要么全部失败回滚。如果事务中的任何一个操作失败,整个事务将会回滚到最初状态,不会产生部分更新的情况。
一致性(Consistency):事务在执行前和执行后都必须保持数据库的一致性状态。这意味着事务的操作必须满足预定义的规则和约束,不会破坏数据库的完整性。
隔离性(Isolation):多个事务并发执行时,每个事务的操作都应该相互隔离,互不干扰。隔离性确保事务在并发执行时产生的结果与串行执行的结果一致,避免了并发问题如脏读、不可重复读和幻读。
持久性(Durability):一旦事务被提交,对数据库的改变就是永久性的,即使系统发生故障也不会丢失。数据库将确保持久性,保证事务提交后的数据持久地保存在数据库中。
非事务(Non-transaction)则是指单个数据库操作语句的执行,这些操作不需要满足事务的原子性、一致性、隔离性和持久性特性。
让我们用一个生活中的例子来解释这个概念:
假设你正在准备一次渡假旅行。你有一份待办清单,需要完成以下任务:预订机票、预订酒店、安排行程、购买旅行保险和准备行李。
现在,我们将这些任务分为两组:事务和非事务。
事务:
非事务:
在这个例子中,你可以把预订机票和预订酒店作为一个事务来处理,以保证它们要么同时成功,要么同时失败。而安排行程、购买旅行保险和准备行李则是独立的非事务任务,它们没有事务特性的要求。
并发是指两个或多个事件、任务或操作在同一时间段内同时进行或交替执行的能力。这是一种在计算机科学和现实生活中广泛应用的概念。以下是一个生活中的例子来说明并发:
假设有一个家庭成员正在煮饭并同时洗碗。在这个场景中,煮饭和洗碗是两个并发的任务。他们可以同时进行,而不需要等待一个任务完成才能开始另一个任务。
在这个例子中,煮饭的家庭成员将处理炉灶和食材,确保饭菜煮熟。同时,另一位家庭成员负责洗碗,清洗餐具和锅碗瓢盆。这两个任务可以在同一时间段内同时进行,互不干扰。
这里的并发展示了同时处理多个任务的能力,提高了家庭成员的效率。类似地,在计算机领域,这个概念也用于描述同时执行多个任务的能力,例如多线程编程、数据库事务和网络请求处理等。
行级锁定是数据库中的一种锁定机制,它与表级锁定相反,它只锁定表中的某个具体行或记录,而不是整个表。
举个例子,考虑一个银行系统,其中有一个表用于存储用户的账户信息。多个用户可以同时访问和修改这个表中的不同行,例如存款、取款或转账。
当一个用户对某个账户执行某个操作时,比如修改账户余额,银行系统可能会使用行级锁定来确保其他用户不能同时修改相同的行。这样做是为了避免并发冲突,例如两个用户尝试同时修改同一个账户的余额,导致数据不一致或丢失的问题。
在行级锁定期间,其他用户可能无法修改被锁定的行,直到锁定被释放。这样可以确保数据的一致性和完整性,并提高并发性能,因为其他用户可以同时访问和修改其他行。
总而言之,行级锁定是一种在数据库中锁定表中的某个具体行或记录的机制,用于避免并发冲突和确保数据的一致性。与表级锁定相比,行级锁定允许更高的并发操作,因为它只锁定需要修改的具体行,而不是整个表。
表级锁定是数据库中一种锁定机制,它指的是在并发访问数据库时,锁定整个表而不是表中的某个具体行或记录。
让我们以一个实际的例子来说明表级锁定的概念。假设有一个在线购物网站,多个用户可以同时浏览和购买商品。当一个用户对某个商品进行购买的时候,购物网站可能会使用表级锁定来确保其他用户不能同时修改该商品的库存。
在这种情况下,当一个用户开始购买某个商品时,购物网站会锁定整个商品库存表,阻止其他用户同时修改该表中的任何数据。这样做是为了避免出现并发冲突,例如两个用户尝试同时购买同一件商品,导致库存计算不正确或出现丢失数据的情况。
在表级锁定期间,其他用户可能无法修改表中的任何数据,直到锁定被释放。这种锁定机制可以确保数据的一致性和完整性,但同时也会降低并发性能,因为其他用户必须等待锁定释放才能执行自己的操作。
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://cz.tttmy.cn/news/10952.html