MySQL查看用户权限及权限管理的方法详解

 更新时间:2024年03月20日 10:13:52   作者:IChen.  
在MySQL中,查看用户权限可以通过多种方式实现,主要取决于我们想要查看的权限类型和详细程度,本文给大家介绍了MySQL查看用户权限及权限管理的方法,并通过代码示例介绍的非常详细,需要的朋友可以参考下

一、 MySQL权限级别介绍

全局——可以管理整个MySQL
库——可以管理指定的数据库
表——可以管理指定数据库的指定表
字段——可以管理指定数据库的指定表的指定字段

权限存储在mysql库的user, db, tables_priv, columns_priv, procs_priv这几个系统表中,待MySQL实例启动后就加载到内存中

二、查看用户权限

1、查看所有用户(用户名、给谁授权)

SELECT user,host FROM mysql.user;

在这里插入图片描述

2、查看单个用户所有情况

SELECT * FROM mysql.user WHERE user='root'\G

\g 相当于’;’
\G使每个字段打印到单独的行,也有’;'的作用

在这里插入图片描述

加粗样式用户信息:授权对象,连接用户名,用户密码

Host: %		# 授权用户,% 代表所有
User: root	# 用户名
authentication_string: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9	#密码,MD5加密

授权信息

Select_priv:确定用户是否可以通过SELECT命令选择数据 
Insert_priv:确定用户是否可以通过INSERT命令插入数据 
Update_priv:确定用户是否可以通过UPDATE命令修改现有数据 
Delete_priv:确定用户是否可以通过DELETE命令删除现有数据 
Create_priv:确定用户是否可以创建新的数据库和表 
Drop_priv:确定用户是否可以删除现有数据库和表 
Reload_priv:确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表 
Shutdown_priv:确定用户是否可以关闭MySQL服务器,将此权限提供给root账户之外的任何用户时,都应当非常谨慎 
Process_priv:确定用户是否可以通过SHOW 
File_priv:确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令 
Grant_priv:确定用户是否可以将已经授予给该用户自己的权限再授予其他用户,例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户 
References_priv:目前只是某些未来功能的占位符,现在没有作用 
Index_priv:确定用户是否可以创建和删除表索引 
Alter_priv:确定用户是否可以重命名和修改表结构 
Show_db_priv:确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库,可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因 
Super_priv:确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令 
Create_tmp_table_priv:确定用户是否可以创建临时表 
Lock_tables_priv:确定用户是否可以使用LOCK 
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 
Event_priv:确定用户能否创建、修改和删除事件,这个权限是MySQL 5.1.6新增的 
Trigger_priv:确定用户能否创建和删除触发器,这个权限是MySQL 5.1.6新增的
Create_tablespace_priv: 创建表的空间

权限表

在这里插入图片描述

三、授权

每次更新权限后记得刷新权限

FLUSH PRIVILEGES;

格式:

GRANT
  [权限] 
ON [库.表] 
TO [用户名]@[IP] 
IDENTIFIED BY [密码] 
# WITH GRANT OPTION;

GRANT命令说明:

(1)ALL PRIVILEGES 表示所有权限,你也可以使用select、update等权限。

(2)ON 用来指定权限针对哪些库和表。

(3)*.* 中前面的号用来指定数据库名,后面的号用来指定表名。

(4)TO 表示将权限赋予某个用户。

(5)@ 前面表示用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。

(6)IDENTIFIED BY 指定用户的登录密码。

(7)WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。

注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。

备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个select权限,然后又给用户添加一个insert权限,那么该用户就同时拥有了select和insert权限。

1、全局授权(直接把 root 限制主机改为 %,任意主机)

因为 root 是数据库用户默认最高权限

UPDATE mysql.user SET user.Host='%' where user.User='root';
FLUSH PRIVILEGES;

当然也可以新建一个用户,给与全部权限

GRANT
  ALL PRIVILEGES
ON *.*
TO admin@'175.155.59.133'
IDENTIFIED BY 'admin';

这样你就可以在远程连接到该数据库,且获取全部权限。

在这里插入图片描述

2、单个数据库授权

只给175.155.59.133这个 IP 赋给 ctrip 数据库 查询的权限,用户:ctrip,密码:ctrip

GRANT
  select
ON ctrip.*
TO ctrip@'175.155.59.133'
IDENTIFIED BY 'ctrip';

声明

(1)用ipconfig查询出来的IP,那是局域网的,这么设置只能局域网内使用,

(2)要想服务器和本机连接,IP 必须是网关的IP,推荐使用 https://www.ipip.net/ 查询自己的 IP。

在这里插入图片描述

可以看到本机连接有 ctrip 数据库和一个数据库本身库,而看不到其他库。注意此时可以看到两个表。

在这里插入图片描述

在这里插入图片描述

3、单个数据库单个表授权

GRANT
  select
ON ctrip.t_plane
TO ctrip@'175.155.59.133'
IDENTIFIED BY 'ctrip';

可以看到只有一个表显示出来,注意现在字段

在这里插入图片描述

4、单个数据库单个表授权某些字段授权

GRANT
  select(id,EN)
ON ctrip.t_plane
TO ctrip@'175.155.59.133'
IDENTIFIED BY 'ctrip';

在这里插入图片描述

四、收回权限、删除用户

1、收回权限

格式:

REVOKE
  [权限] 
ON [库.表] 
FROM [用户名]@[IP];

操作:

REVOKE
  select(id,EN)
ON ctrip.t_plane
FROM ctrip@'175.155.59.133';

2、删除用户

格式:

DROP USER [用户名]@[IP];

操作:

DROP USER ctrip@'175.155.59.133';

以上就是MySQL查看用户权限及权限管理的方法详解的详细内容,更多关于MySQL用户权限及管理的资料请关注脚本之家其它相关文章!

相关文章

  • MySQL timestamp自动更新时间分享

    MySQL timestamp自动更新时间分享

    在mysql中timestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间
    2013-06-06
  • 彻底搞懂MySQL存储过程和函数

    彻底搞懂MySQL存储过程和函数

    我们大家都知道MySQL 存储过程是从 MySQL 5.0 开始逐渐增加新的功能,下面这篇文章主要给大家介绍了关于MySQL存储过程和函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • MySQL中列如何以逗号分隔转成多行

    MySQL中列如何以逗号分隔转成多行

    这篇文章主要介绍了MySQL中列如何以逗号分隔转成多行问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • mysql 8.0 错误The server requested authentication method unknown to the client解决方法

    mysql 8.0 错误The server requested authentication method unkno

    在本篇文章里小编给大家整理的是关于mysql 8.0 错误The server requested authentication method unknown to the client解决方法,有此需要的朋友们可以学习下。
    2019-08-08
  • MySQL 基于时间点的快速恢复方案

    MySQL 基于时间点的快速恢复方案

    这篇文章主要介绍了MySQL 基于时间点的快速恢复方案,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
    2020-11-11
  • 详解MySQL中的SQRT函数的使用方法

    详解MySQL中的SQRT函数的使用方法

    这篇文章主要介绍了详解MySQL中的SQRT函数的使用方法,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • insert和select结合实现

    insert和select结合实现"插入某字段在数据库中的最大值+1"的方法

    今天小编就为大家分享一篇关于insert和select结合实现"插入某字段在数据库中的最大值+1"的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • MySQL分区之RANGE分区详解

    MySQL分区之RANGE分区详解

    Range分区是最常用的一种分区类型,它是根据某个列的值划分为几个连续的区,行数据根据该列的值分别放入到不同的分区,这篇文章主要给大家介绍了关于MySQL分区之RANGE分区的相关资料,需要的朋友可以参考下
    2022-04-04
  • MySQL通用查询日志和慢查询日志全面分析

    MySQL通用查询日志和慢查询日志全面分析

    这篇文章主要介绍了MySQL通用查询日志和慢查询日志的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • MySQL日期加减函数详解

    MySQL日期加减函数详解

    在本篇文章里小编给大家分享的是关于MySQL日期加减函数用法以及实例,需要的朋友们可以参考下。
    2020-05-05

最新评论