用户的创建_修改_删除、用户密码的设置和管理、权限管理与访问控制、角色的使用、配置文件、系统变量
# 第03章_用户与权限管理

# 1. 用户管理

# 创建用户

USE mysql;

SELECT * FROM user;

CREATE USER 'zhang3' IDENTIFIED BY '123456';

SELECT Host,User FROM user;

CREATE USER 'zhang3' IDENTIFIED BY '123456';

CREATE USER 'zhang3'@'localhost' IDENTIFIED BY '123456';

SELECT Host,User FROM user;

CREATE USER 'li4'@'%' IDENTIFIED BY '123456';

SELECT Host,User FROM user;

# 修改用户

UPDATE user SET User = 'wang5' WHERE User = 'li4' AND Host = '%';

FLUSH PRIVILEGES;

SELECT Host,User FROM user;

# 删除用户

DROP USER 'wang5';

DROP USER 'zhang3'@'localhost';

SELECT Host,User FROM user;

# 设置当前用户密码

# 使用ALTER USER命令来修改当前用户密码
ALTER USER USER() IDENTIFIED BY '123456..';

ALTER USER USER() IDENTIFIED BY '123456';

# 使用SET语句来修改当前用户密码
SET PASSWORD = '123456..';

SET PASSWORD = '123456';


USE mysql;

DESC user;

SELECT Host,User,authentication_string FROM user;

# 修改其它用户密码

ALTER USER 'zhang3'@'%' IDENTIFIED BY 'hello';

SET PASSWORD FOR 'zhang3'@'%' = '123456';

# 2. 权限管理

# 权限列表

# (1) CREATE和DROP权限 ,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。
# 如果将MySQL数据库中的DROP权限授予某用户,用户就可以删除MySQL访问权限保存的数据库。
# (2)SELECT、INSERT、UPDATE和DELETE权限 允许在一个数据库现有的表上实施操作。
# (3) SELECT权限只有在它们真正从一个表中检索行时才被用到。
# (4) INDEX权限 允许创建或删除索引,INDEX适用于已有的表。如果具有某个表的CREATE权限,
# 就可以在CREATE TABLE语句中包括索引定义。
# (5) ALTER权限 可以使用ALTER TABLE来更改表的结构和重新命名表。
# (6) CREATE ROUTINE权限 用来创建保存的程序(函数和程序),ALTER ROUTINE权限用来更改和删除保存的程序,
# EXECUTE权限 用来执行保存的程序。
# (7) GRANT权限 允许授权给其他用户,可用于数据库、表和保存的程序。
# (8) FILE权限 使用户可以使用LOAD DATA INFILE和SELECT ... INTO OUTFILE语句读或写服务器上的文件,
# 任何被授予FILE权限的用户都能读或写MySQL服务器上的任何文件
# (说明用户可以读任何数据库目录下的文件,因为服务器可以访问这些文件)。

SHOW PRIVILEGES;

# 授予权限的原则

# 权限控制主要是出于安全因素,因此需要遵循以下几个 经验原则 :
# 1、只授予能 满足需要的最小权限 ,防止用户干坏事。比如用户只是需要查询,
# 那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
# 2、创建用户的时候 限制用户的登录主机 ,一般是限制成指定IP或者内网IP段。
# 3、为每个用户 设置满足密码复杂度的密码 。
# 4、 定期清理不需要的用户 ,回收权限或者删除用户。

# 授予权限

# 给用户授权的方式有 2 种,分别是通过把 角色赋予用户给用户授权 和 直接给用户授权 。
# 用户是数据库的使用者,我们可以通过给用户授予访问数据库中资源的权限,来控制使用者对数据库的访问,
# 消除安全隐患。

SHOW DATABASES;

GRANT SELECT,UPDATE ON dbtest1.* TO 'zhang3'@'%';

GRANT DELETE ON dbtest1.* TO 'zhang3'@'%';

CREATE USER 'li4' IDENTIFIED BY '123456';

GRANT ALL PRIVILEGES ON *.* TO 'li4'@'%';

# 我们在开发应用的时候,经常会遇到一种需求,就是要根据用户的不同,对数据进行横向和纵向的分组。
#     所谓横向的分组,就是指用户可以接触到的数据的范围,比如可以看到哪些表的数据;
#     所谓纵向的分组,就是指用户对接触到的数据能访问到什么程度,比如能看、能改,甚至是删除。

# 查看权限

SHOW GRANTS;

# 收回权限

REVOKE SELECT ON dbtest1.* FROM 'zhang3'@'%';

REVOKE ALL PRIVILEGES ON *.* FROM 'li4'@'%';

GRANT SYSTEM_USER ON *.* TO root@'%';

REVOKE ALL PRIVILEGES ON *.* FROM 'li4'@'%';

# 3. 权限表

USE mysql;

SHOW TABLES;

DESC user;

SELECT Host,User,authentication_string FROM user;

# user表
DESC user;

# db表
DESC db;

# tables_priv表
DESC tables_priv;

# columns_priv表
DESC columns_priv;

# 5. 角色管理

# 角色的理解
# 引入角色的目的是 方便管理拥有相同权限的用户 。恰当的权限设定,可以确保数据的安全性,这是至关重要的。

# 创建角色

CREATE ROLE 'manager'@'%';

CREATE ROLE 'boss'@'%';

# 给角色赋予权限

USE dbtest1;

SHOW TABLES;

GRANT SELECT,UPDATE ON dbtest1.* TO 'manager';

GRANT ALL PRIVILEGES ON *.* TO 'boss'@'%';

# 查看角色的权限

SHOW GRANTS FOR 'manager'@'%';

SHOW GRANTS FOR 'boss';

# 回收角色的权限

REVOKE UPDATE ON dbtest1.* FROM 'manager';

SHOW GRANTS FOR 'manager';

# 删除角色

CREATE ROLE 'admin';

DROP ROLE 'admin';

SHOW GRANTS FOR 'admin';

# 给用户赋予角色

USE mysql;

SELECT Host,User FROM user;

CREATE USER 'wang5'@'%' IDENTIFIED BY '123456';

GRANT 'manager'@'%' TO 'wang5'@'%';

SHOW GRANTS FOR 'wang5';

# 激活角色

SET DEFAULT ROLE 'manager'@'%' TO 'wang5'@'%';

# 撤销用户的角色

REVOKE 'manager'@'%' FROM 'wang5'@'%';


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇