| 设为首页 加入收藏 |
当前位置: |
| TOP | |||||||||||||||||||||||||||||||||||||||
|
MySQL优化之――权限管理(三)
当从旧版本的MySQL升级时,要使用EXECUTE, CREATE VIEW, SHOW VIEW, CREATE USER, CREATE ROUTINE和ALTER ROUTINE权限 授权 授权就是为某个用户授予权限 授予的权限可以分为多个层级: · 全局层级 全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。 · 数据库层级 数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANT ALL ONdb_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。 · 表层级 表权限适用于一个给定表中的所有列。这些权限存储在mysql.talbes_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表中。 当后续目标是一个表、一个已存储的函数或一个已存储的过程时,object_type子句应被指定为TABLE、FUNCTION或PROCEDURE。当从旧版本的MySQL升级时,要使用本子句,您必须升级您的授权表 使用GRANT语句创建一个新用户grantUser,密码为“grantpwd” 用户对所有的数据有查询、插入权限,并授予GRANT权限 ? GRANT SELECT ,INSERT ON *.*TO 'grantUser'@'localhost' identified BY '123456' WITH GRANT OPTION ; ?
查询显示grantUser被创建成功,并赋予了SELECT、INSERT、GRANT权限,其相应字段值为Y 被授予GRANT权限的用户可以登录MYSQL并创建其他用户帐户,在这里是grantUser的用户 收回权限 收回权限就是取消已经赋予用户的某些权限。收回用户不必要的权限可以在一定程度上保证系统的安全性。 使用REVOKE收回权限之后,用户帐户的记录将从db、host、tables_priv、columns_priv表中删除,但是用户帐号记录依然 在user表中保存。 语法 ?
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | * | *.* | db_name.*}
FROM user [, user] ...
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
? 使用REVOKE语句,必须拥有mysql数据库的全局CREATE权限或UPDATE权限 使用REVOKE语句取消用户grantUser的INSERT权限 ? REVOKE INSERT ON *.* FROM 'grantUser'@'localhost'; ?
可以看到grantUser用户的INSERT权限已经被收回了
查看权限 SHOW GRANT语句可以显示用户的权限信息 语法 ? show grants FOR 'user'@'host'; ? 使用SHOW GRANT语句查询用户grantUser的权限信息 ? show grants FOR 'grantUser'@'localhost'; ?
返回结果显示了user表中的帐户信息;接下来以为GRANT SELECT ON关键字开头,表示用户被授予了SELECT权限; *.*表示SELECT权限作用于所有数据库的所有数据表; IDENTIFIED BY 后面的为用户加密后的密码 在这里,只是定义了个别的用户权限,GRANT可以显示更加详细的权限信息,包括全局级的和非全局级的权限 如果表层级或者列层级的权限被授予用户的话,他们也能在结果中显示出来。 查看MYSQL里面匿名用户 如果有匿名用户,那么客户端就可以不用密码登录MYSQL数据库,这样就会存在安全隐患 检查匿名用户的方法 ? SELECT * FROM mysql.user WHERE `User`=''; ?
如果查找到user字段值为空的那条记录,说明存在匿名用户,需要把这条记录删除 如果用匿名用户登录MYSQL就可以看到用户名是空的
删除语句 DELETE FROM mysql.user WHERE `User`=''; SELECT * FROM mysql.user WHERE `User`=''; 总结 本文简单的阐述了MYSQL的用户管理和权限方面的内容,希望对大家有帮助 如果大家想更深入学习MYSQL访问控制方面的知识 可以参考这篇文章:MySQL权限的架构体系 核心就是两个图 1、客户端连接请求认证阶段
? 2、客户端操作请求认证阶段
|
| 首页 上一页 1 2 3 下一页 尾页 3/3/3 | |
| 【大 中 小】【打印】 【繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部】 | |
|
分享到:
|
|
| 上一篇:Mysql中创建序列的方法 | 下一篇:mysql技术内幕之InnoDBInsert(插.. |
| 评论 |
|
|
| ·Announcing October | (2025-12-24 15:18:16) |
| ·MySQL有什么推荐的学 | (2025-12-24 15:18:13) |
| ·到底应该用MySQL还是 | (2025-12-24 15:18:11) |
| ·进入Linux世界大门的 | (2025-12-24 14:51:47) |
| ·Download Linux | Li | (2025-12-24 14:51:44) |