mysql的权限系统

2019-08-30 13:40

6.1 mysql的权限系统

6.1.1 权限表

? 客户对mysql数据库的访问权限由权限表来控制,表位于mysql数据库中,

并在第一次安装mysql的过程中初始化。

? Mysql数据库权限表由6个表组成:user表、db表、host表、table_priv表、

columns_priv表、proc_priv表 1、权限表user、db和host的结构和作用 (1)user表

? Mysql中最重要的一个权限表,记录允许连接到服务器的账号信息。 ? 列出可以连接到服务器的用户及其口令,并指定他们有哪种全局权限 ? User表中启用的任何权限都是全局权限,适用于所有数据库

? Mysql5.5中,user表有42个字段,分为4类:用户列、权限列、安全列和

资源控制列

A、用户列:分别表示主机名、用户名和密码,其中user和host为联合主键。 B、权限列:包括以select_priv、insert_priv等以priv结尾的字段这些字段决定用户的权限,描述了在全局范围内允许对数据和数据库进行的操作。 C、安全列:安全列有6个字段其中2个和ssl有关(用于加密)、2个和x509有关(用于标识用户)、2个与授权插件有关(用于验证用户)。

D、资源控制列:用来限制用户使用的资源。认值为0,表示没有限制。 (2)db表和host表

? Db表中存储用户对某个数据库的操作权限,决定用户能从哪个数据库中存取

数据。

? Host表中存储了某个主机对数据库的操作权限,配合db权限表对给定主机

上数据库操作权限做更细致的控制。 注意:

? User表的权限是针对所有数据库的。

? 如果希望用户只对某个数据库有操作权限,需要将user表中对应的权限设置

为N,然后在db表中设置对应数据的操作权限。

? 用户先根据user表获取权限,然后再根据db表的内容获取权限 2、table_priv表、colunms_priv表和proc_priv表 ? table_priv表:对表设置操作权限

? colunms_priv表:对表的某一列设置操作权限 ? proc_priv表:对存储过程和存储函数设置操作权限 6.1.2 mysql权限系统的工作原理

? 当mysql允许一个用户执行各种操作时,首先核实用户向服务器发送的连接

请求,然后确认用户的操作请求是否被允许。

? Mysql的访问控制分为两个阶段:连接核实和请求核实阶段。 1、 连接核实阶段

使用user表的3个字段(host、user和password)进行身份验证,服务器只有在用户提供给主机名、用户名和密码并与user表中对应的字段值完全匹配时才能接受连接。 2、 请求核实阶段

接收到用户操作请求检查user表中权限检查db表和host表中权限检查table_priv表中权限检查column_priv表中权限是否允许用户执行该操作

6.1.3 账户管理 1、创建账户

? 创建新用户,必须有相应的权限 ? Mysql有三种方法创建新用户:

图形工具:navicat

SQL语句:create user或grant 直接操作权限表(不推荐) (1)使用navicat工具创建用户 (2)使用create user创建用户

例1使用CREATE USER创建一个用户,用户名是rjxy,密码是mypass,主机名是localhost

CREATE USER 'rjxy'@'localhost' IDENTIFIED BY 'mypass';

例2添加一个新用户,用户名为bana,密码为440432,不指定明文。 首先,使用password()获取密码的散列值: Select password(440432);

创建用户:

Create user 'bana'@'localhost'

Identified by password '*8896757F25D7B730D7A72894FE06257623CF99B9'; 验证:

A. 登录navicat界面查看用户:用户管理、user表。

B. 以bana用户登录mysql:

mysql–hlocalhost–ubana-p 打开数据库 Use stu_info;

(3)使用grant创建用户

例3使用GRANT语句创建一个新的用户testUser,密码为testuser。用户testUser对所有的数据有查询和更新权限,并授于对所有数据表的SELECT和UPDATE权限。 #创建账户并授予权限:

GRANT SELECT,UPDATE ON *.* TO 'testUser'@'localhost' IDENTIFIED BY 'testUser'; #查看账户权限信息(注意用户名区分大小写):

selecthost,user,select_priv,update_priv from mysql.user where user='testUser';

(4)直接操作mysql用户表

例4使用INSERT创建一个新账户,其用户名称为student,主机名称为localhost,密码为student: #创建用户

INSERT INTO mysql.user (Host,User,Password) VALUES('localhost','student',PASSWORD('student')); #激活用户 Flush privileges;

#查看用户信息

Select host,user from mysql.user; 2、删除账户

(1)使用navicat图形工具删除用户 (2)使用drop user删除用户

例5 使用DROP USER删除用户'rjxy'@'localhost' DROP USER 'rjxy'@'localhost'; #查看用户信息

Select host,user from mysql.user; (3)使用delete删除用户

例6 使用DELETE删除用户'student'@'localhost'

Delete FROMmysql.userWHERE host='localhost' and user='student'; #查看用户信息

Select host,user from mysql.user; 3、 修改账户名称

(1)使用navicat图形工具修改用户 (2)使用rename user修改用户 例7将用户bana的名字改为stu。

Rename user 'bana'@'localhost' to 'stu'@'localhost'; #查看用户信息

Select host,user from mysql.user; 4、修改账户密码 (1)root用户修改密码

? 使用mysqladmin命令修改密码

例8使用mysqladmin将root用户的密码修改为“rootpwd” mysqladmin -u root -p password \? 使用update命令修改密码

例9使用UPDATE语句将root用户的密码修改为“123456”: UPDATE mysql.user set Password=password(\WHERE User=\


mysql的权限系统.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第九届中国国际茶业博览会招展资料doc版 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: