MySQL的账户创建与权限分配(账户管理)

目录

一、创建帐号与授权

二、回收权限

三、修改账户密码

四、删除账号

五、账号资源限制

六、刷新权限


  • MySQL使用用户名+IP作为用户(即相同的用户名,从不同的IP连接,被视为不同的用户)
  • 用户在登录时,进行相应的权限赋予,在此权限下操作。
  • 权限表在启动的时候载入内存。
select * from mysql.user;       # 用户的全局权限
select * from mysql.db;	        # 用户的数据库权限
select * from mysql.host;	# 主机的数据库权限,新版已弃用。
select * from mysql.tables_priv;	# 用户的表权限
select * from mysql.columns_priv;	# 用户的列权限
  • 权限的顺序:user->db->tables_priv->columns_priv(即user表存在相应的权限,则不再检查后续的权限表。)
# 查看指定用户的权限
show grants for 'jangle'@'%'; 
select * from information_schema.schema_privileges where GRANTEE = "'jangle'@'%'";

一、创建帐号与授权

# 创建用户与授权
GRANT priv_type [(column_list)][,priv_type[(column_list)]] ...
ON [objcect_type] {tbl_name|*|*.*|db_name.*}
TO user_name@_host [IDENTIFIED BY [PASSWORD] 'password'] 
[WITH GRANT OPTION]
# 创建用户与授权(选项说明)
priv_type = USAGE|SELECT|UPDATE|DELETE|INSERT|CREATE|ALTER|DROP|INDEX|ALL PRIVILEGES... #登录权限|查询权限|更新权限|删除权限|插入权限|创建库表权限|修改库表权限|删除库表权限|创建索引权限|全部权限|...
priv_type = super|process|file #管理权限。
object_type = TABLE|FUNCTION|PROCEDURE	#可选项
user_name@_host # 必填:用户,mysql对于相同用户名但不统的IP地址则视为不同的用户。即'jangle'@'%' 与 'jangle'@'localhost' 是2个用户。
[IDENTIFIED BY [PASSWORD] 'password'] #可选项:如果进行密码设置,则会同步进行用户创建。否则若用户不存在,会报错。
[WITH GRANT OPTION] #可选项:该用户是否能授予其他人这些权限。即权限的传递权。
# 创建用户与授权(例子)
grant select,update,insert,delete on demo.* to 'jangle_demo_test'@'%' IDENTIFIED by '1' with grant option ;#创建用户jangle_demo_test并授予demo数据库【增删改查】的权限,设置密码为1,且该用户可以将【增删改查】的权限授予其他用户
grant select(id),update(mail_result) on demo.bs_mail to  'jangle_demo_test'@'%'; #给demo数据库的bs_mail表的指定列授权。

二、回收权限

# 回收权限
REVOKE priv_type [(column_list)][,priv_type[(column_list)]]...
ON [object_type]{tbl_name|*|*.*|db_name.*}
FROM user[,user]...
# 回收权限(选项说明)
priv_type = SELECT|UPDATE|DELETE|INSERT|ALL PRIVILEGES|GRANT OPTION|... #查询权限|更新权限|删除权限|插入权限|所有权限|传递授权的权限|...
user[,user]... #可以同时回收多个用户的权限
# 回收权限(例子)
REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'jangle_demo_test'@'%';	#回收jangle_demo_test用户的所有权限,以及授权传递的权限
REVOKE SELECT,UPDATE,DELETE,INSERT ON demo.* FROM 'jangle_demo_test'@'%';		#回收jangle_demo_test用户在demo数据库所有表的查询,更新,删除,插入权限。

三、修改账户密码

# 修改账户密码 ,有多种方式,推荐使用一下方式:
GRANT USAGE ON *.* TO 'jangle_demo_test'@'%' IDENTIFIED BY '2';	#明文密码
GRANT USAGE ON *.* TO 'jangle_demo_test'@'%' IDENTIFIED BY PASSWORD '*E6CC90B878B948C35E92B003C792C46C58C4AF40'; #版本不同用的密文不一样
SET PASSWORD = PASSWORD('2');	#设置自己的密码
SET PASSWORD = '*E6CC90B878B948C35E92B003C792C46C58C4AF40'; #密文设置,设置自己的密码

四、删除账号

# 删除用户
DROP USER 'jangle_demo_test'@'%';

五、账号资源限制

# 帐号资源限制
GRANT SELECT ON 'jangle_demo_test'@'%' WITH {MAX_QUERIES_PER_HOUR|MAX_UPDATES_PER_HOUR|MAX_CONNECTIONS_PER_HOUR|MAX_USER_CONNECTIONS} count;
# MAX_QUERIES_PER_HOUR :每小时最大查询次数。
# MAX_UPDATES_PER_HOUR :每小时最大更新次数。
# MAX_CONNECTIONS_PER_HOUR :每小时最大连接次数。
# MAX_USER_CONNECTIONS :最大用户连接数(最大并发数)。
# count : 数字,次数。
# root使用 FLUSH USER_RESOURCES|FLUSH PRIVILEGES|mysqladmin reload 可将累计的次数清零。

六、刷新权限

# 刷新权限 当通过对数据表进行直接操作时,需要刷新内存中的权限。
FLUSH PRIVILEGES;  # 该刷新操作还会重置资源限制的次数。
发布了129 篇原创文章 · 获赞 20 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Bof_jangle/article/details/103527662