mysql课件第十五章用户管理.ppt
MySql数据库,天津理工大学 华信软件学院 田春艳 2011年9月-2012年1月,用户管理,MySQL用户包括普通用户和root用户。这两种用户的权限是不一样的。root用户是超级管理员,拥有所有的权限。root用户的权限包括创建用户、删除用户、修改普通用户的密码等管理权限。而普通用户只拥有创建该用户时赋予它的权限。用户管理包括管理用户的帐户、权限等。,内容,权限表介绍用户登录和退出MySQL服务器创建和删除普通用户普通用户和root用户的密码管理权限管理,权限表,安装MySQL时会自动安装一个名为mysql的数据库。mysql数据库下面存储的都是权限表。用户登录以后,MySQL数据库系统会根据这些权限表的内容为每个用户赋予相应的权限。这些权限表中最重要的是user表、db表和host表。除此之外,还有tables_priv表、columns_priv表、proc_priv表等。,user表,user表是MySQL中最重要的一个权限表。user表有39个字段。这些字段大致可以分为四类,分别是用户列、权限列、安全列和资源控制列。当初始化用户密码时,由用户提供其密码,该密码经加密后保存在USER表中;当用户再次登录时,将用户登录使用的密码经加密,并比较加密的结果与USER表中保存的密码,如果相同则允许用户登录。,db表和host表,db表和host表也是MySQL数据库中非常重要的权限表。db表中存储了某个用户对一个数据库的权限。db表比较常用,而host表很少会用到。这两个表的表结构差不多。db表和host表的字段大致可以分为两类,分别是用户列和权限列。1用户列2权限列,tables_priv表和,tables_priv表可以对单个表进行权限设置。tables_priv表包含8个字段,分别是Host、Db、User、Table_name、Table_priv、Column_priv、Timestamp和Grantor。前四个字段分别表示主机名、数据库名、用户名和表名。Table_priv表示对表进行操作的权限。这些权限包括Select、Insert、Update、Delete、Create、Drop、Grant、References、Index和Alter。,columns_priv表,columns_priv表可以对单个数据列进行权限设置。Column_priv表示对表中的数据列进行操作的权限。这些权限包括Select、Insert、Update和References。Timestamp表示修改权限的时间。Grantor表示权限是谁设置的。,procs_priv表,procs_priv表可以存储过程和存储函数进行权限设置。procs_priv表包含8个字段,分别是Host、Db、User、Routine_name、Routine_type、Proc_priv、Timestamp和Grantor。Routine_name字段表示存储过程或函数的名称。Routine_type字段表示类型。该字段有两个取值,分别是FUNCTION和PROCEDURE。FUNCTION表示这是一个存储函数。PROCEDURE表示这是一个存储过程。Proc_priv字段表示拥有的权限。权限分为3类,分别是Execute,Alter Routine和Grant。Timestamp字段存储更新的时间。Grantor字段存储权限是谁设置的。,内容,权限表介绍用户登录和退出MySQL服务器创建和删除普通用户普通用户和root用户的密码管理权限管理,帐户管理,账户管理是MySQL用户管理的最基本的内容。账户管理包括登录和退出MySQL服务器、创建用户、删除用户、密码管理、权限管理等内容。通过账户管理,可以保证MySQL数据库的安全性。,登录和退出MySQL服务器,用户可以通过mysql命令来登录MySQL服务器。启动MySQL服务后,可以通过mysql命令来登录MySQL服务器。命令如下:mysql-h hostname|hostIP-P port-u username-p DatabaseName-e SQL语句,新建普通用户,在MySQL数据库中,可以使用CREATE USER语句来创建新的用户,也可以直接在mysql.user表中添加用户。还可以使用GRANT语句来新建用户。本小节将为读者介绍这三种方法。1用CREATE USER语句来新建普通用户2用INSERT语句来新建普通用户3用GRANT语句来新建普通用户,用CREATE USER语句来新建普通用户,Create user u identified by abb,u1 indentified by pwd,用INSERT语句来新建普通用户,Insert into mysql.user()values(),用GRANT语句来新建普通用户,GRANT privileges(columns)ON what TO username IDENTIFIED BY password WITH GRANT OPTION,例如,GRANT select,insertON testTO test_guest IDENTIFIED BY 1111WITH GRANT OPTION,删除普通用户,在MySQL数据库中,可以使用DROP USER语句来删除普通用户,也可以直接在mysql.usr表中删除用户。本小节将为读者介绍这两种方法。1用DROP USER语句来删除普通用户2用DELETE语句来删除普通用户,DROP USER,Drop user username1,username2例如 Drop user test_guest,DELETE语句,Delete from mysql.test where user=test_guest and host=localhost,root用户修改自己的密码,root用户拥有很高的权限,因此必须保证root用户的密码的安全。root用户可以通过多种方式来修改密码。本小节将介绍几种root用户修改自己的密码的方法。1使用mysqladmin命令来修改root用户的密码2修改mysql数据库下的user表3使用SET语句来修改root用户的密码,使用mysqladmin命令来修改root用户的密码,C:Program FilesMySQLMySQL Server 5.1binmysqladmin u root p password“new_password”,修改mysql数据库下的user表Update mysql.user set password=password(密码)where user=root使用SET语句来修改root用户的密码set password=password(密码),root用户修改普通用户密码,root用户不仅可以修改自己的密码,还可以修改普通用户的密码。root用户登录MySQL服务器后,可以通过SET语句、修改user表和GRANT语句来修改普通用户的密码。本小节将向读者介绍root用户修改普通用户密码的方法。1使用SET语句来修改普通用户的密码2修改mysql数据库下的user表3用GRANT语句来修改普通用户的密码,语法,Set password for username=password(newpassword)修改mysql数据库下的user表Update mysql.user set password=password(密码)where user=root,GRANT privileges(columns)ON what TO username IDENTIFIED BY password,普通用户修改密码,普通用户也可以修改自己的密码。这样普通用户就不需要每次需要修改密码时都通知管理员。普通用户登录到MySQL服务器后,可以通过SET语句来设置自己的密码。SET语句的基本形式为:SET PASSWORD=PASSWORD(new_password);,root用户密码丢失的解决办法,root用户密码丢失了,会给用户造成很大的麻烦。但是,可以通过某种特殊方法登录到root用户下。然后在root用户下设置新的密码。下面是解决root用户密码丢失的方法,执行步骤如下:1使用-skip-grant-tables选项启动MySQL服务2登录root用户,并且设置新的密码3加载权限表,内容,权限表介绍用户登录和退出MySQL服务器创建和删除普通用户普通用户和root用户的密码管理权限管理,权限管理,权限管理主要是对登录到数据库的用户进行权限验证。所有用户的权限都存储在MySQL的权限表中。数据库管理员要对权限进行管理。合理的权限管理能够保证数据库系统的安全。不当的权限设置可能会给数据库系统带来意想不到的危害。本节将为读者介绍权限管理的内容。,MySQL的各种权限,MySQL数据库中有很多种类的权限,这些权限都存储在mysql数据库下的权限表中。其中,user表中的权限种类最多。本小节将为读者介绍MySQL中的各种权限。,授权,授权就是为某个用户赋予某些权限。例如,可以为新建的用户赋予查询所有数据库和表的权限。合理的授权能够保证数据库的安全。不合理的授权会使数据库存在安全隐患。MySQL中使用GRANT关键字来为用户设置权限。MySQL中,必须拥有GRANT权限的用户才可以执行GRANT语句。GRANT语句的基本语法如下:GRANT priv_type(column_list)ON database.table TO user IDENTIFIED BY PASSWORD password,user IDENTIFIED BY PASSWORD password.WITH with_option with_option.,GRANT语句的基本语法,GRANT priv_type(column_list)ON database.table TO user IDENTIFIED BY PASSWORD password,user IDENTIFIED BY PASSWORD password.WITH with_option with_option.,Grant select on db_school.student to username Grant all on*.*to username,收回权限,收回权限就是取消某个用户的某些权限。例如,如果数据库管理员觉得某个用户不应该拥有DELETE权限,那么就可以将DELETE权限收回。收回权限的方式可以保证数据库的安全。MySQL中使用REVOKE关键字来为用户设置权限。收回指定权限的REVOKE语句的基本语法如下:REVOKE priv_type(column_list).ON database.table FROM user,user.,查看权限,MySQL中,可以使用SELECT语句来查询user表中各个用户的权限,也可以直接使用SHOW GRANTS语句来查看权限。mysql数据库下的user表中存储着用户的基本权限,可以使用SELECT语句来查看。SELECT语句的代码如下:SELECT*FROM mysql.user;,总结,Q&A!,