第10讲 MySQL用户管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安装MySQL时会自动安装一个名为mysql的数据库。 mysql数据库下面存储的都是权限表。用户登录以后, MySQL数据库系统会根据这些权限表的内容为每个用户赋 予相应的权限。这些权限表中最重要的是user表、db表和 host表。除此之外,还有tables_priv表、columns_priv表、 proc_priv表等。
3 安全列 Ssl_type、ssl_cipher、x509_issuer和 x509_subject Ssl用于加密;x509标准可以用来标识用户。
4 资源控制列 Max_questions、max_updates、 max_connections和max_user_connections Max_questions和max_updates分别规定每小时可以 允许执行多少次的查询和更新 max_connections规定每小时可以建立多少连接 max_user_connections规定单个用户可以同时具有 的连接数。 默认值为0,表示没有限制
第10讲 MySQL用户管理
MySQL用户包括普通用户和root用户。这两种用户的 权限是不一样的。root用户是超级管理员,拥有所有的权限 。root用户的权限包括创建用户、删除用户、修改普通用户 的密码等管理权限。而普通用户只拥有创建该用户时赋予它 的权限。用户管理包括管理用户的帐户、权限等。
10.1 权限表
10.2 帐户管理
账户管理是MySQL用户管理的最基本的内容。账户管 理包括登录和退出MySQL服务器、创建用户、删除用户、 密码管理、权限管理等内容。通过账户管理,可以保证 MySQL数据库的安全性。
10.2.1 登录和退出MySQL服务器
用户可以通过mysql命令来登录MySQL服务器。在本 小节中将详细的介绍mysql命令的参数和退出MySQL服务器 的方法。启动MySQL服务后,可以通过mysql命令来登录 MySQL服务器。命令如下: mysql -h hostname|hostIP -P port -u username -p DatabaseName -e "SQL语句"
1 用create user语句来新建普通用户 CREATE USER user[IDENTIFIED BY „password‟] [, user[IDENTIFIED BY „password‟]]…
user由用户名(User)和主机名(Host)构成; IDENTIFIED BY关键字用来设置用户的密码
2 用insert语句来新建普通用户 Insert into mysql.user(host,user,password,ssl_cipher,x509_issue r,x509_subject) Values(„hostname‟,‟username‟,PASSWORD(„pass word‟),‟‟,‟‟,‟‟);
10.2.3 删除普通用户
在MySQL数据库中,可以使用DROP USER语句来删 除普通用户,也可以直接在mysql.user表中删除用户。 1.用DROP USER语句来删除普通用户 2.用DELETE语句来删除普通用户
1 用drop user语句删除普通用户 DROP USER user [,user]… user参数是需要删除的用户,由用户的用户名(User) 和主机名(Host)组成
DROP USER „test2‟@‟localhost‟;
Leabharlann Baidu
2 用DELETE语句删除普通用户 DELETE FROM mysql.user WHERE host=„hostname‟ AND user=„username‟; Host和user这两个字段都是mysql.user表的主键。这 两个字段才能唯一的确定一条记录。
2 权限列 User表的权限列包括Select_priv,Insert_priv等以priv 结尾的字段。这些字段决定了用户的权限。 普通权限:查询、修改、删除等(用于操作数据库) 高级管理权限:关闭服务权限、超级权限和加载用户 等(用于对数据库进行管理) 通过update语句更新user表的方式来设置权限。
新密码必须使用password()函数来加密。 FLUSH PRIVILEGES;
3 使用set语句来修改root用户的密码 Set password=password(“new_password”);
15.2.5 root用户修改普通用户密码
root用户不仅可以修改自己的密码,还可以修改普通用 户的密码。root用户登录MySQL服务器后,可以通过SET语 句、修改user表和GRANT语句来修改普通用户的密码。本 小节将向读者介绍root用户修改普通用户密码的方法。 1.使用SET语句来修改普通用户的密码 2.修改mysql数据库下的user表 3.用GRANT语句来修改普通用户的密码
1 set语句 Set password for „username‟@‟hostname‟=password(“new_password”);
2 修改mysql.user表 Update mysql.user set password=password(“new_password”) where user=“username” and host=“localhost”;
Mysql中权限分配是按照user表、db表、table_priv表 和columns_priv表的顺序进行分配的。数据库系统中,先 判断user表中的值是否为y。如果user表中的值为Y,就不 需要检查后面的表。如果user表的为N,则依次检查db表、 table_priv表和columns_priv表
FLUSH PRIVILEGES;
3 用GRANT语句来新建普通用户 GRANT priv_type ON database.table TO user[IDENTIFIED BY „password‟] [,user[IDENTIFIED BY „password‟]]…
Priv_type参数表示新用户的权限; Database.table新用户的权限范围,只能在指定的数 据库和表上使用自己的权限
10.1.2 db表和host表
db表和host表也是MySQL数据库中非常重要的权限表 。db表中存储了某个用户对一个数据库的权限。db表比较 常用,而host表很少会用到。使用DESC语句来查看这两个 表的基本结构。这两个表的表结构差不多。db表和host表的 字段大致可以分为两类,分别是用户列和权限列。 1.用户列 2.权限列
Root用户可以使用mysqladmin命令修改密码,但普通 用户通常不能使用这个命令。
10.3 权限管理
权限管理主要是对登录到数据库的用户进行权限验证 。所有用户的权限都存储在MySQL的权限表中。数据库管 理员要对权限进行管理。合理的权限管理能够保证数据库系 统的安全。不当的权限设置可能会给数据库系统带来意想不 到的危害。
10.1.4 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字段存储权限是谁设置的。
10.1.3 tables_priv表和columns_priv表
tables_priv表可以对单个表进行权限设置。 columns_priv表可以对单个数据列进行权限设置。可以使用 DESC语句来查看这两个表的基本结构。 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。Column_priv表示对表中的数 据列进行操作的权限。这些权限包括Select、Insert、Update 和References。Timestamp表示修改权限的时间。Grantor表 示权限是谁设置的。
1 用户列 Db表的用户列包括host、db和user字段,分别表示主 机名、数据库名和用户名。Host表的用户列有两个字段, 分别是host和db. Host表是db表的扩展。如果db表找不到host字段的值 ,就需要到host表中去寻找。 Host表很少用到,通常db表的设置已经满足要求
2 权限列 User表中的权限是针对所有数据库。如果user表中的 select_priv字段取值为y,那么该用户可以查询所有数据库 中的表;如果某个用户只设置了查询test数据库的权限,那 么user表的select_priv字段的取值为N。而这个select权限 则记录在db表中,db表中select_priv字段的取值会是Y.
1 使用mysqladmin命令 mysqladmin –u username –p password “new_password”; 注意“”双引号
mysqladmin –u root –p password “123123”
2 修改mysql数据库下的user表 Update mysql.user set password=password(“new_password”) where user=“root” and host=“localhost”;
10.1.1 user表
user表是MySQL中最重要的一个权限表。使用DESC语 句来查看user表的基本结构。user表有39个字段。这些字段 大致可以分为四类,分别是用户列、权限列、安全列和资源 控制列。 1.用户列 2.权限列 3.安全列 4.资源控制列
1 用户列 包括Host、User、Password,分别表示主机名、用 户名和密码。 用户登录首先要判断这3个字段,同时匹配才允许登录 修改用户密码实际就是修改user表中的password字段 的值。
10.2.2 新建普通用户
在MySQL数据库中,可以使用CREATE USER语句来 创建新的用户,也可以直接在mysql.user表中添加用户。还 可以使用GRANT语句来新建用户。创建普通用户的三种方 法。 1.用CREATE USER语句来新建普通用户 2.用INSERT语句来新建普通用户 3.用GRANT语句来新建普通用户
FLUSH PRIVILEGES;
10.2.4 root用户修改自己的密码
root用户拥有很高的权限,因此必须保证root用户的密 码的安全。root用户可以通过多种方式来修改密码。本小节 将介绍几种root用户修改自己的密码的方法。 1.使用mysqladmin命令来修改root用户的密码 2.修改mysql数据库下的user表 3.使用SET语句来修改root用户的密码
3 grant语句修改 Grant priv_type on database.table To user[identified by „password‟];
10.2.6 普通用户修改密码
普通用户也可以修改自己的密码。这样普通用户就不 需要每次需要修改密码时都通知管理员。普通用户登录到 MySQL服务器后,可以通过SET语句来设置自己的密码。 SET语句的基本形式为: SET PASSWORD=PASSWORD('new_password');