共计 3490 个字符,预计需要花费 9 分钟才能阅读完成。
这篇文章主要讲解了“mysql 有 user 表吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“mysql 有 user 表吗”吧!
mysql 有 user 表。user 表是 MySQL 中的一个权限表,用来记录允许连接到服务器的账号信息;user 表中的字段大致可以分为 4 类,分别是用户列、权限列、安全列和资源控制列。
本教程操作环境:windows7 系统、mysql5.7 版本、Dell G3 电脑。
mysql 有 user 表。
user 表是 MySQL 中最重要的一个权限表,用来记录允许连接到服务器的账号信息。需要注意的是,在 user 表里启用的所有权限都是全局级的,适用于所有数据库。
user 表中的字段大致可以分为 4 类,分别是用户列、权限列、安全列和资源控制列,下面主要介绍这些字段的含义。
用户列
用户列存储了用户连接 MySQL 数据库时需要输入的信息。需要注意的是 MySQL 5.7 版本不再使用 Password 来作为密码的字段,而改成了 authentication_string。
MySQL 5.7 版本的用户列如表 1 所示。
表 1:user 表的用户列字段名字段类型是否为空默认值说明 Hostchar(60)NO 无主机名 Userchar(32)NO 无用户名 authentication_stringtextYES 无密码
用户登录时,如果这 3 个字段同时匹配,MySQL 数据库系统才会允许其登录。创建新用户时,也是设置这 3 个字段的值。修改用户密码时,实际就是修改 user 表的 authentication_string 字段的值。因此,这 3 个字段决定了用户能否登录。
权限列
权限列的字段决定了用户的权限,用来描述在全局范围内允许对数据和数据库进行的操作。
权限大致分为两大类,分别是高级管理权限和普通权限:
高级管理权限主要对数据库进行管理,例如关闭服务的权限、超级权限和加载用户等;
普通权限主要操作数据库,例如查询权限、修改权限等。
user 表的权限列包括 Select_priv、Insert_ priv 等以 priv 结尾的字段,这些字段值的数据类型为 ENUM,可取的值只有 Y 和 N:Y 表示该用户有对应的权限,N 表示该用户没有对应的权限。从安全角度考虑,这些字段的默认值都为 N。
表 2:user 表的权限列字段名字段类型是否为空默认值说明 Select_privenum(N , Y)NON 是否可以通过 SELECT 命令查询数据 Insert_privenum(N , Y)NON 是否可以通过 INSERT 命令插入数据 Update_privenum(N , Y)NON 是否可以通过 UPDATE 命令修改现有数据 Delete_privenum(N , Y)NON 是否可以通过 DELETE 命令删除现有数据 Create_privenum(N , Y)NON 是否可以创建新的数据库和表 Drop_privenum(N , Y)NON 是否可以删除现有数据库和表 Reload_privenum(N , Y)NON 是否可以执行刷新和重新加载 MySQL 所用的各种内部缓存的特定命令,包括日志、权限、主机、查询和表 Shutdown_privenum(N , Y)NON 是否可以关闭 MySQL 服务器。将此权限提供给 root 账户之外的任何用户时,都应当非常谨慎 Process_privenum(N , Y)NON 是否可以通过 SHOW PROCESSLIST 命令查看其他用户的进程 File_privenum(N , Y)NON 是否可以执行 SELECT INTO OUTFILE 和 LOAD DATA INFILE 命令 Grant_privenum(N , Y)NON 是否可以将自己的权限再授予其他用户 References_privenum(N , Y)NON 是否可以创建外键约束 Index_privenum(N , Y)NON 是否可以对索引进行增删查 Alter_privenum(N , Y)NON 是否可以重命名和修改表结构 Show_db_privenum(N , Y)NON 是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库 Super_privenum(N , Y)NON 是否可以执行某些强大的管理功能,例如通过 KILL 命令删除用户进程;使用 SET GLOBAL 命令修改全局 MySQL 变量,执行关于复制和日志的各种命令。(超级权限)Create_tmp_table_privenum(N , Y)NON 是否可以创建临时表 Lock_tables_privenum(N , Y)NON 是否可以使用 LOCK TABLES 命令阻止对表的访问 / 修改 Execute_privenum(N , Y)NON 是否可以执行存储过程 Repl_slave_privenum(N , Y)NON 是否可以读取用于维护复制数据库环境的二进制日志文件 Repl_client_privenum(N , Y)NON 是否可以确定复制从服务器和主服务器的位置 Create_view_privenum(N , Y)NON 是否可以创建视图 Show_view_privenum(N , Y)NON 是否可以查看视图 Create_routine_privenum(N , Y)NON 是否可以更改或放弃存储过程和函数 Alter_routine_privenum(N , Y)NON 是否可以修改或删除存储函数及函数 Create_user_privenum(N , Y)NON 是否可以执行 CREATE USER 命令,这个命令用于创建新的 MySQL 账户 Event_privenum(N , Y)NON 是否可以创建、修改和删除事件 Trigger_privenum(N , Y)NON 是否可以创建和删除触发器 Create_tablespace_privenum(N , Y)NON 是否可以创建表空间
如果要修改权限,可以使用 GRANT 语句为用户赋予一些权限,也可以通过 UPDATE 语句更新 user 表的方式来设置权限。
安全列
安全列主要用来判断用户是否能够登录成功,user 表中的安全列如表 3 所示:
表 3:user 表的安全列字段名字段类型是否为空默认值说明 ssl_typeenum(, ANY , X509 , SPECIFIED)NO
支持 ssl 标准加密安全字段 ssl_cipherblobNO
支持 ssl 标准加密安全字段 x509_issuerblobNO
支持 x509 标准字段 x509_subjectblobNO
支持 x509 标准字段 pluginchar(64)NOmysql_native_password 引入 plugins 以进行用户连接时的密码验证,plugin 创建外部 / 代理用户 password_expiredenum(N , Y)NON 密码是否过期 (N 未过期,y 已过期)password_last_changedtimestampYES
记录密码最近修改的时间 password_lifetimesmallint(5) unsignedYES
设置密码的有效时间,单位为天数 account_lockedenum(N , Y)NON 用户是否被锁定(Y 锁定,N 未锁定)
注意:即使 password_expired 为“Y”,用户也可以使用密码登录 MySQL,但是不允许做任何操作。
通常标准的发行版不支持 ssl,读者可以使用 SHOW VARIABLES LIKE have_openssl 语句来查看是否具有 ssl 功能。如果 have_openssl 的值为 DISABLED,那么则不支持 ssl 加密功能。
资源控制列
资源控制列的字段用来限制用户使用的资源,user 表中的资源控制列如表 4 所示。
表 4:user 表的资源控制列字段名字段类型是否为空默认值说明 max_questionsint(11) unsignedNO0 规定每小时允许执行查询的操作次数 max_updatesint(11) unsignedNO0 规定每小时允许执行更新的操作次数 max_connectionsint(11) unsignedNO0 规定每小时允许执行的连接操作次数 max_user_connectionsint(11) unsignedNO0 规定允许同时建立的连接次数
以上字段的默认值为 0,表示没有限制。一个小时内用户查询或者连接数量超过资源控制限制,用户将被锁定,直到下一个小时才可以在此执行对应的操作。可以使用 GRANT 语句更新这些字段的值。
感谢各位的阅读,以上就是“mysql 有 user 表吗”的内容了,经过本文的学习后,相信大家对 mysql 有 user 表吗这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!