MySql教程

mysql03 mysql用户管理

本文主要是介绍mysql03 mysql用户管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • MySQL用户可以分为普通用户和root用户。
  • root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理权限;
  • 普通用户只拥有被授予的各种权限。

1、权限表

  • MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库中,由MySQL_install_db脚本初始化。
  • 存储账户权限信息的表主要有: user、db、host、tables_priv、columns_priv和procs_priv。

1、user表

  • user表记录允许连接到服务器的账号信息,里面的权限是全局级(所有用户的数据库)的。
  • MySQL 5.7中user表有42个字段,这些字段可以分为4类,分别是用户列、权限列、安全列和资源控制列。

1、用户列

  • user表的用户列包括Host、User、Password,分别表示主机名、用户名和密码。

2、权限列

  • user表中权限列的字段决定了用户的权限,描述了在全局范围(所有用户的数据库)内允许对数据和数据库进行的操作。
  • 这些字段值的类型为ENUM,可以取的值只能为Y和N, Y表示该用户有对应的权限; N表示用户没有对应的权限。默认都是N。
  • 包括普通权限和高级权限:
    • 普通权限用于操作数据库,例如查询权限、修改权限等
    • 高级权限用于数据库管理,例如关闭服务器、超级权限和加载用户等
  • 如果要修改权限,可以用GRANT语句或UPDATE语句更改user表的这些字段来修改用户对应的权限。

3、安全列

  • 安全列只有6个字段,其中两个是ssl相关的,两个是x509相关的,另外两个是授权插件相关的。
  • ssl用于加密; x509标准可用于标识用户: Plugin字段标识可以用于验证用户身份的插件,如果该字段为空,服务器使用内建授权验证机制验证用户身份。
  • 可以通过SHOW VARIABLES LIKE 'have_openssl'语句来查询服务器是否支持ssl功能。

4、资源控制列

  • max_questions:用户每小时允许执行的查询操作次数。
  • max_updates:用户每小时允许执行的更新操作次数。
  • max_connections:用户每小时允许执行的连接操作次数。
  • max_user-connections:用户允许同时建立的连接次数。

2、db表和host表

  • db表中存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。
  • db表用户列有3个字段,分别是Host、User、Db,标识从某个主机连接某个用户对某个数据库的操作权限,这3个字段的组合构成了db表的主键。
  • user表中的权限是针对所有数据库的,如果希望用户只对某个数据库有操作权限,那么需要将user表中对应的权限设置为N,然后在db表中设置对应数据库的操作权限。
  • host表中存储了某个主机对数据库的操作权限,配合db权限表对给定主机上数据库级操作权限做更细致的控制。
  • host表不存储用户名称,用户列只有2个字段,分别是Host和Db,表示从某个主机连接的用户对某个数据库的操作权限,其主键包括Host和Db两个字段。
  • host很少用到,一般情况下db表就可以满足权限控制需求了。

3、其他权限表

1、tables_priv表

  • tables_priv表用来对表设置操作权限。

2、columns_priv表

  • columns_priv表用来对表的某一列设置权限

3、procs_priv 表

  • procs_priv表可以对存储过程和存储函数设置操作权限

2、账户管理

1、登录和退出MySQL服务器

  • mysql [OPTIONS] [database]         #mysql命令
    • -h, --host=name:可以使用该参数指定要连接到主机名或ip,如果不指定,默认是localhost.
    • -u, --user=name:可以使用该参数指定用户名。
    • -p, --password[=name]:可以使用该参数指定登录密码。
      • 注意:该参数后面的字符串和-p之间不能有空格。
    • -P, --port=#:可以使用该参数指定要连接的端口号,默认为3306
    • -e, --execute=name。如果指定了该参数,将在登录后执行-e后面的命令或SQL语句并退出。
    • database:可以在命令的最后指定要连接的数据库。
mysql -hlocalhost -P3306 -uroot -proot mysql     #后面的mysql是数据库的名称
mysql -u root -proot -e "show databases;"        #-e后面的命令要用双引号,不能使用单引号

2、创建普通用户

  • 创建新用户,必须有相应的权限来执行创建操作。
  • 在MySQL数据库中,有两种方式创建新用户:一种是使用CREATE USER或GRANT语句。另一种是直接操作MySQL授权表。

1、使用CREATE USER语句创建新用户

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#                                                                                                                    #
这篇关于mysql03 mysql用户管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!