新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 数据库 > MYSQL

MySQL权限控制的用法

时间:2019-06-12 14:11:35  来源:  作者:

概述

  • 身份认证模块,即MySQL客户端通过指定用户名,密码,主机名来连接MySQL服务器,主要是认证给定的用户是否有权限连接MySQL服务器,而权限控制模块主要用于控制已经通过身份认证的用户对数据库、数据库表、数据表的列的访问权限。针对数据库,数据表和数据表的列的访问控制主要在mysql数据库的user表进行定义,如下是user表的完整字段集合:
| Host | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv |
Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv |
Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv |
Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv |
Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer |
x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin |
authentication_string | password_expired | password_last_changed | password_lifetime |
account_locked |
  • 在MySQL中一个用户是由用户名user和访问主机host唯一确定的,即user@host唯一确定,以下分析所用的test_user用户是指’test_user’@’%'这个用户。

权限控制

1. 查看给定用户的权限

命令为SHOW GRANTS FOR,如以下test_user为新增的用户,没有赋予数据库相关的访问权限,如下USAGE表示没有权限。

```
mysql> show grants for 'test_user'@'%';
+---------------------------------------+
| Grants for test_user@% |
+---------------------------------------+
| GRANT USAGE ON *.* TO 'test_user'@'%' |
+---------------------------------------+
1 row in set (0.00 sec)
```

2. 添加对数据库,数据表的访问权限:

  • 权限枚举主要为:针对DML相关的(SELECT,UPDATE,DELETE,INSERT),针对DLL相关的(CREATE、ALTER、DROP),以及其他权限:CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHUTDOWN,SUPER 和 USAGE。
  • 在以下所列权限当中,从上到下,上的可以覆盖下的权限,即Global权限优先于Database权限,如果某个用户有全局权限,而Database权限设置对该用户无效,即即使该用户在Database级别没有设置可以访问指定数据库的表的权限,则该用户也是可以访问的。

1.Global全局权限,即对所有数据库的所有表的所有字段都有效的权限:“ * .* ”,其中左边为数据库通配符,右边为数据表通配符。

mysql> GRANT SELECT,UPDATE,DELETE,INSERT ON *.* TO 'test_user'@'%';
Query OK, 0 rows affected (0.01 sec)

2.Database数据库权限,即针对指定数据库的所有数据表的所有字段有效的权限:如下为给test_user这个用户赋予对easy_web这个数据库所有表的ALTER权限。

mysql> GRANT ALTER ON easy_web.* TO 'test_user'@'%';
Query OK, 0 rows affected (0.00 sec)

3.Table数据表权限:即针对指定数据表的所有字段有效的权限:如下为给test_user在easy_web的t_user表的所有字段添加索引的权限。

mysql> GRANT INDEX ON easy_web.t_user TO 'test_user'@'%';
Query OK, 0 rows affected (0.00 sec)

4.Column数据列的权限:即只指定指定数据库的指定表的指定列的权限:如下为只给test_user在easy_web数据库的t_user表对id, name列的SELECT的权限,但是没有INSERT插入数据到这两个字段的权限。

mysql> GRANT SELECT(id,name) ON easy_web.t_user TO 'test_user'@'%';
Query OK, 0 rows affected (0.00 sec)
  • 除了在GRANT上指定具体的权限枚举之外,还可以通过ALL来指定对应级别上面的所有权限。如下为给test_user指定对easy_web数据库内的所有表的所有操作权限:
mysql> GRANT ALL ON easy_web.* TO 'test_user'@'%';
Query OK, 0 rows affected (0.00 sec)

3. 删除权限

删除权限主要通过与GRANT相对的REVOKE来实现,即解除指定的权限,使用方法一般是将以上GRANT替换为REVOKE,将TO替换为FROM,如下为解除test_user对eas_web数据库所有表的操作权限:

mysql> REVOKE ALL ON easy_web.* FROM 'test_user'@'%';
Query OK, 0 rows affected (0.00 sec)

4. 刷新权限

使权限在线生效:由于MySQL服务器会将权限相关的数据加载到内存中,通常通过以上操作进行权限控制时是写到权限控制的数据库表对应的磁盘文件中,所以需要通过FLUSH PRIVILEGES命令来重新从磁盘读取一次数据到内存中来使权限生效。

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

5. 删除用户

删除用户是通过DROP USER命令来实现,如下:

mysql> DROP USER 'test_user'@'%';
Query OK, 0 rows affected (0.01 sec)



Tags:MySQL   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
本文记录的是在CentOS 7下安装与配置jdk-8u162的过程。一、下载jdk-8u162版本链接地址:官方地址二、上传jdk到centos下三、检查当前linux系统上是否有jdk,linux命令:rpm -qa |...【详细内容】
2019-11-27   MySQL  点击:(0)  评论:(0)  加入收藏
1、MyCAT基础架构准备MyCAT基础架构图 摘自oldguo1.1 MyCAT基础架构准备1.1.1 环境准备:两台虚拟机 db01(10.0.0.51) db02(10.0.0.52) 每台创建四个mysql实例:3307 3308 3309 33...【详细内容】
2019-11-26   MySQL  点击:(2)  评论:(0)  加入收藏
MySQL中7个查询命令的优先级:FROM --> WHERE --> GROUP BY --> HAVING -->SELECT --> ORDER BY --> LIMIT==============================================================...【详细内容】
2019-11-26   MySQL  点击:(2)  评论:(0)  加入收藏
欢迎关注头条号:Java小野猫实践中如何优化MySQL实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化和硬件的优化四个方面,如下图所示: SQL语...【详细内容】
2019-11-26   MySQL  点击:(3)  评论:(0)  加入收藏
1.拉取CentOS镜像由于CentOS7在Docker上有一个DBUS(进程间通信机制)的BUG,所以这里建议下载CentOS6的镜像。只需在镜像名后面加上TAG既可docker pull imagine10255/centos6-l...【详细内容】
2019-11-26   MySQL  点击:(3)  评论:(0)  加入收藏
概述这篇文章主要针对刚入门的开发,一般半个小时是可以学完的,当然要理解的话估计不止30分钟,对于初学者来说只需满足自己需求可以增删改查等简易的维护即可。下面介绍下MySQL...【详细内容】
2019-11-26   MySQL  点击:(2)  评论:(0)  加入收藏
phpMyAdmin工具在导入WordPress的MySQL数据库时报错了,吓死宝宝了,还以为压缩文件名必须以 .[格式].[压缩方式]结尾。如:.sql.zip压缩格式的问题呢,百度搜索一番后发现是由于...【详细内容】
2019-11-26   MySQL  点击:(1)  评论:(0)  加入收藏
1 复制概述Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,...【详细内容】
2019-11-25   MySQL  点击:(1)  评论:(0)  加入收藏
修改MySQL最大连接数有两个方法。一个是直接在命令行中修改,另一个是配置文件第一种:命令行修改。mysql -uroot -pmysql>show variables like 'max_connections';(查...【详细内容】
2019-11-21   MySQL  点击:(3)  评论:(0)  加入收藏
老张我在刚开始学习数据库的时候,没少走弯路。经常会遇到各种稀奇古怪的 error 信息,遇到报错会很慌张,急需一个解决问题的办法。跟无头苍蝇一样,会不加思索地把错误粘到百度上,希望赶紧查找一下有没有好的处理问题的方法...【详细内容】
2019-11-21   MySQL  点击:(2)  评论:(0)  加入收藏
[client]#默认连接端口                port = 3306#用于本地连接的socket套接字,一般linux下有用socket = /data/mysqldata/3306/mysql.sock#客户端编码de...【详细内容】
2019-11-20   MySQL  点击:(5)  评论:(0)  加入收藏
这篇文章主要是认识一下mysql中的变量,本来是不准备整理的,但是发现后面的存储过程等等在实际用的时候还挺多。mysql里面的变量你可以和java中的变量进行对比理解。主要分为两...【详细内容】
2019-11-20   MySQL  点击:(3)  评论:(0)  加入收藏
这篇文章主要是从mysql数据库的逻辑架构来认识掌握mysql的原理。只要是稍微有一点计算机的相关知识相信都能看明白。一、笼统的逻辑架构先给出一张逻辑架构图,这张图是让你从...【详细内容】
2019-11-20   MySQL  点击:(4)  评论:(0)  加入收藏
概述文章有点长哟,需要耐心看哟数据库系统是现代商业世界有序稳定运行的基石,数据和数据承载的交易事件的结果不会因系统故障而损伤。数据库系统的核心技术是事务处理机制,也是...【详细内容】
2019-11-20   MySQL  点击:(1)  评论:(0)  加入收藏
概述今天主要介绍一下mysql 中 时间函数now() current_timestamp() 和 sysdate() 以及三者之间的比较。now()、current_timestamp() 和 sysdate()在mysql中有三个时间函数用...【详细内容】
2019-11-19   MySQL  点击:(2)  评论:(0)  加入收藏
1 初识索引索引在MySQL中也叫是一种“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发...【详细内容】
2019-11-18   MySQL  点击:(6)  评论:(0)  加入收藏
索引是存储引擎用于快速查找记录的一种数据结构,我们可以通过合理的使用数据库索引以提高数据库的访问效率。接下来主要介绍在MySQL 数据库中索引类型,以及如何创建出更加合...【详细内容】
2019-11-18   MySQL  点击:(4)  评论:(0)  加入收藏
1.查看mysql连接数语句命令:2.首先作为超级用户登录到MYSQL,注意必须是超级用户,否则后面会提示没有修改权限。3.按回车键执行后显示目前的超时时间4.显示的是默认的超时时间,即...【详细内容】
2019-11-18   MySQL  点击:(4)  评论:(0)  加入收藏
1)在https://repo.mysql.com/ 上找到要安装的版本,这里我选择了 mysql80-community-release-el7-3.noarch.rpm2)在centos上 用wget 下载 https://repo.mysql.com/mysql80-com...【详细内容】
2019-11-14   MySQL  点击:(26)  评论:(0)  加入收藏
重要说明:需要同步的表必须要有主键 主键 主键otter是一款基于Java且免费、开源基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库的解决方案。 Otte...【详细内容】
2019-11-13   MySQL  点击:(17)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条