Rootop 服务器运维与web架构

mysql用户权限

mysql.user表用户权限相关字段的含义:

Select_priv   		  #查询
Insert_priv  		  #插入
Update_priv  		  #修改
Delete_priv   		  #删除
Create_priv   		  #创建数据库或表
Drop_priv     		  #删除数据库或表
Reload_priv   		  #执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表重新加载权限表  
Shutdown_priv 		  #关闭MySQL服务,在将此权限提供给root账户之外的任何用户时,都应当非常谨慎 
Process_priv  		  #用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程服务器管理  
File_priv     		  #用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令加载服务器上的文件  
Grant_priv    		  #用户是否可以将已经授予给该用户自己的权限再授予其他用户(任何用户赋予全部已有权限
References_priv 	  #目前只是某些未来功能的占位符;现在没有作用  
Index_priv      	  #用户是否可以创建和删除表索及引用索引查询表
Alter_priv      	  #用户是否可以重命名和修改表结构
Show_db_priv    	  #用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因
Super_priv      	  #用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令超级权限  
Create_tmp_table_priv #用户是否可以创建临时表
Lock_tables_priv      #用户是否可以使用LOCK TABLES命令阻止对表的访问/修改
Execute_priv          #用户是否可以执行存储过程此权限只在MySQL 5.0及更高版本中有意义
Repl_slave_priv		  #用户是否可以读取用于维护复制数据库环境的二进制日志文件此用户位于主系统中,有利于主机和客户机之间的通信主服务器管理 
Repl_client_priv 	  #用户是否可以确定复制从服务器和主服务器的位置从服务器管理
Create_view_priv 	  #用户是否可以创建视图此权限只在MySQL 5.0及更高版本中有意义
Show_view_priv 		  #用户是否可以查看视图或了解视图如何执行此权限只在MySQL 5.0及更高版本中有意义  
Create_routine_priv   #用户是否可以更改或放弃存储过程和函数此权限是在MySQL 5.0中引入的  
Alter_routine_priv    #用户是否可以修改或删除存储函数及函数此权限是在MySQL 5.0中引入的  
Create_user_priv      #用户是否可以执行CREATE USER命令,这个命令用于创建新的MySQL账户  
Event_priv 			  #用户是否创建、修改和删除事件这个权限是MySQL 5.1.6新增的
Trigger_priv 		  #用户是否创建和删除触发器,这个权限是MySQL 5.1.6新增的  
Create_tablespace_priv#用户是否可以创建表空间 

# GRANT赋权的关键词和数据库中mysql.user表权限字段对应关系参考链接
https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

# 指定全部权限,mysql.user 表中会体现出权限控制信息
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'1.1.1.1' IDENTIFIED BY '111111';

# 指定库的权限,会在 mysql.db 表中体现出精细到指定库的信息
GRANT SELECT,INSERT,UPDATE ON ops.* TO 'user1'@'%';

# 指定库指定表的权限,会在 mysql.tables_priv 表中体现出权限精细到某张表的信息
GRANT SELECT,INSERT,UPDATE ON ops.ding TO 'user1'@'%';

# 指定某表的某列权限,会在 mysql.columns.priv 表中体现出来
GRANT SELECT(`age`),UPDATE(`age`) ON aaa.info TO 'user1'@'%';
#测试
#mysql> update info set age = 1 where id =1;
#ERROR 1143 (42000): SELECT command denied to user 'user1'@'x.x.x.x' for column 'id' in table 'info'
#mysql> update info set age = 1 where age = 11;
#Query OK, 1 row affected (0.03 sec)

# 刷新内存中的权限
FLUSH PRIVILEGES;

# 查看用户权限
SHOW GRANTS FOR 'user1';


# 赋权语句解析
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY '111111' WITH GRANT OPTION;

ALL PRIVILEGES:表示将所有权限赋给用户。也可指定具体的权限,如:SELECT、UPDATE、INSERT等。
ON:这些权限对哪些数据库和表生效,第一个*号是数据库名,第二个*号是表名
TO:将权限赋予哪个用户。用户名@地址,所有地址用%表示,或者可以指定具体ip、ip段、主机名。
IDENTIFIED BY:指定用户的密码。
WITH GRANT OPTION:允许用户将自己的权限赋权给其它用户。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/4868.html

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。