mysql 如何对一个帐号授权对数据库的读写

mysql 如何对一个帐号授权对数据库的读写,第1张

grant select,update,insert on database.* to 'user1'@'localhost' identified by '123456' with grant option

将database库的所有权限赋予用户user1;

用户user1只能从本地登陆,密码为123456,且可以将自己有的权限赋给其他用户。

MySQL数据库中的表与其他任何关系表没有区别,都可以通过典型的SQL命令修改其结构和数据。可以使用GRANT和REVOKE命令。通过这些命令,可以创建和禁用用户,可以在线授予和撤回用户访问权限。在5.0版本中增加了两个新命令:CREATE USER和DROP USER。从而能更容易地增加新用户、删除和重命名用户,还增加了第三个命令RENAME USER用于重命名现有的用户。

使用CREATE USER命令创建用户

CREATE USER用于创建新的MySQL账户。要使用CREATE USER语句,您必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。对于每个账户,CREATE USER会在没有权限的mysql.user表中创建一条新记录。如果账户已经存在,则出现错误。使用自选的IDENTIFIED BY子句,'可以为账户设置一个密码。user和密码的设置方法与GRANT语句一样。其命令的原型如下:

CREATE USER user [IDENTIFIED BY [PASSWORD 'PASSWORD'] [,user [IDENTIFIED BY [PASSWORD'PASSWORD']]……

create user temp identified by '123456'

使用DROP USER命令删除用户

如果存在一个或是多个账户被闲置,应当考虑将其删除,确保不会用于可能的违法活动。利用DROP USER命令就能很容易地从权限表中删除用户的所有信息,即来自所有授权表的账户权限记录。DROP USER命令原型如下:

DROP USER user [,user] ……

ps"DROP USER不能自动关闭任何打开的用户对话;而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。

使用RENAME USER命令重命名用户

RENAMEUSER语句用于对原有MySQL账户进行重命名。RENAMEUSER语句的命令原型如下:

RENAME USER old_user TO new_user [,old_user TO new_user] ……

ps:如果旧账户不存在或者新账户已存在,则会出现错误。

回到顶部

权限管理

GRANT和REVOKE命令

GRANT和REVOKE命令用来管理访问权限,也可以用来创建和删除用户,但在MySQL5.0.2中可以利用CREATE USER和DROP USER命令更容易地实现这些任务。GRANT和REVOKE命令对于谁可以 *** 作服务器及其内容的各个方面提供了多程度的控制,从谁可以关闭服务器,到谁可以修改特定表字段中的信息都能控制。

如果授权表拥有含有mixed-case数据库或表名称的权限记录,并且lower_case_table_names系统变量已设置,则不能使用REVOKE撤销权限,必须直接 *** 纵授权表。(当lower_case_table_names已设置时,GRANT将不会创建此类记录,但是此类记录可能已经在设置变量之前被创建了。)

授予的权限可以分为多个层级:

全局层级适用于一个给定服务器中的所有数据库,这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。

数据库层级适用于一个给定数据库中的所有目标,这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name .*和REVOKE ALL ON db_name .*只授予和撤销数据库权限。

表层级适用于一个给定表中的所有列,这些权限存储在mysql.tables_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。

列层级适用于一个给定表中的单一列,这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。

子程序层级,CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序,这些权限可以被授予为全局层级和数据库层级;而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。

grant all on *.* to user identified by '123456' with grant option

--授予用户名为user、密码为123456的用户使用所有数据库的所有权限,并允许他向其他人授予这些权限。

revoke all privileges,grant from user

grant usage on books.* to user identified by '123456'

--创建一个没有任何权限的常规用户

grant select,insert,update,delete,index,alter,create,drop on books.* to user

--为用户user授予适当的权限

revoke alter,create,drop on books.* from user

--减少权限

revoke all on books.* from user

--撤销所有的权限

p


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8592549.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存