MySQL-技术专区-数据库权限管理
前言
学习mysql数据库,对于它的权限的管理是关键的一环。所以,下面介绍的是MySQL权限的管理。
MySQL权限表
MySQL数据库实际上是通过将用户写入mysql库中对应的权限表来控制访问权限的。
权限表分别为: user,db,table_priv,columns_priv和host。
- user:记录允许连接到服务器的用户的信息,里面的权限是全局级的
- db:记录每个用户对各个数据库级别的操作权限
- table_priv:记录每个用户对数据表级别的操作权限
- columns_priv:记录每个用户对数据列级别的操作权限
- host:存储了某个主机对数据库的操作权限,配合db表对给定的主机上数据库级别的操作权限做更细致的控制,但host表一般很少用,新版本MySQL已经没有host表了
数据库权限管理的意义
简而言之,mysql数据库的权限的管理,就如同Linux系统或window系统的用户权限的管理。
赋予/撤销某个用户对某个数据库或某个表的某项权力(读、写、更改、删除等)
对于各种数据库的权限的管理的意义:
- 一方面是为了数据的安全,用于数据库的备份和禁止不相关用户的某些操作;
- 一方面是允许某些项目时,某些用户对相关数据库的管理;
- 一方面是为了读写分离,减轻对数据库的压力。
MySQL数据库权限命令格式
注意:sql语句大小皆可,看个人的使用习惯,关于数据库的权限管理是通过对用户的权限的设置来完成的
MySQL创建用户的基础格式:
在对权限的管理时,通常的写法是创建用户并授权,不会先创建一个用户再进行赋权,通常使用的是下方第两种格式的命令。
MySQL创建用户的格式为:
create user 用户名 identified by '该用户密码';
MySQL赋权的基础格式为:
grant 权限 on 授权对象(库.表) to 用户@地址段 identified by "该用户的密码";
MySQL撤销权限的基础格式为:
revoke 撤销相应的权限时,正好与授权相反。
只要把该授权语句的"grant"改为"revoke", “to"改为"from”
MySQL数据库权限示例及解析
【1】授予的权限
all privileges 除with grant option(让授权的用户,也可以将这些权限 grant 给其他用户,权限复制)之外的所有权限
alter 对数据表的修改的权限
alter routine 更改或者删除存储函数或者存储过程的权限
create 创建数据库及表的权限
create routine 更改和弃用存储过程的能力
create temporary tables 创建临时表的权限
create user 创建、重命名和撤销用户的权限
create view 创建视图的权限
delete 数据表中删除数据的权限
drop 允许删除数据库、表、视图的权限
execute 执行存储过程或者调用函数的权限
event 允许查询,创建,修改,删除MySQL事件的权限
file 对系统中的文件(本地文件)读取和写操作的权限;
grant option 用户委派权限的权限
index 创建、删除索引的权限
insert 向表中插入数据的权限
lock tables 允许对拥有select权限的表进行锁表的权限
process 查看所有用户线程/连接的权限
references 5.7.6版本后,允许是否创建外键的权限
reload 允许执行flush,重新加载权限表的权限
replication client 允许用户查询从服务器和主服务器位置的权限
replication slave 允许slave主机通过此用户连接master建立主从的权限
select 允许从表中查看数据的权限
show databases 查看所有数据库名的权限
show view 查看视图详细信息的权限
shutdown 允许关闭数据库实例的权限
super 允许执行一系列数据库管理命令的权限(change、master、kill thread、mysqladmindebug、purge master logs、set global...)
trigger MySQL5.1.6后,允许创建,删除,执行,显示触发器的权限
update 允许修改表中的数据的权限
usage 创建一个用户之后的默认权限,只代表连接,无其他任何权限
【2】MySQL数据库授权注意事项
grant select on 数据库.数据表* to 用户@'%' identified by "密码" with grant option;
with grant option 是让该授权的用户,也可以将它的权限赋予给其他用户
此种授权方法并不提倡,且实际上很少甚至几乎不用。应为权限最好是在DBA的手中,为了安全及方便管理
注意2:
grant 可以作用在单个数据库及单个数据表上,被授权的范围的写法
- *.* 意为所有的数据库及表
- 数据库名.* 意为该数据库下的所有表
- 数据库名.数据表名 意为该数据库下的该数据表
注意3:
被授权的用户的写法
%代替一整个网段
- '用户名'@'%' 意为所有网段都可以用该用户登陆数据库
- '用户名'@'192.168.123.234' 意为只有此IP可使用该用户登陆数据库
- '用户名'@'192.168.122.%' 意为192.168.122该网段的所有主机都可使用该用户登陆数据库
【3】数据库授权
<1>创建用户并授予只读权限
grant select on 数据库名.* to 用户@'%' identified by "密码";
<2>创建用户并授予插入数据权限
grant insert on 数据库名.* to 用户@'%' identified by "密码";
<3>创建用户并授予改变原有数据的权限
grant update on 数据库名.* to 用户@'%' identified by "密码";
<4>创建用户并授予删除数据的权限
grant delete on 数据库名.* to 用户@'%' identified by "密码";
要拥有以上所有权限,可写为一条,权限间用“,”逗号隔开。
grant select, insert, update, delete on 数据库名.* to 用户@'%' identified by "密码";
<5>创建用户并授予所有权限
grant all privileges on 数据库名.数据表明 to 用户@'网段或ip' identified by "密码" ;
<6>创建用户并授予其对数据表的创建的权限
grant create on 数据库名.* to 用户@‘网段或IP’ identified by '密码';
<7>创建用户并授予其对数据表的修改权限
grant alter on 数据库名.* to 用户@‘网段或IP’ identified by '密码';
<8>创建用户并授予其对数据库/表/视图的删除的权限
grant drop on 数据库名.* to 用户@‘网段或IP’ identified by '密码';
<9>创建用户并授予其对数据库下表的设置外键的权限
grant references on 数据库名.* to 用户@‘网段或IP’ identified by '密码';
<10>创建用户并授予其对数据库的设置临时表权限
grant create temporary tables on 数据库名.* to 用户@‘网段/IP’ identified by '密码';
<11>创建用户并授予其对某数据库范围的表设置索引的权限
grant index on 数据库名.* to 用户@‘网段或IP’ identified by '密码';
<12>创建用户并授予其对某数据库范围内创建视图的权限
grant create view on 数据库名.* to 用户@‘网段或IP’ identified by '密码';
<13>创建用户并授予其对某数据库范围内查看视图的权限
grant show view on 数据库名.* to 用户@‘网段/IP’ identified by '密码';
<14>创建用户并授予其对某数据库范围内存储过程、函数的权限
grant create routine on 数据库名.* to 用户@‘网段或IP’; -- now, can show procedure status
grant alter routine on 数据库名.* to 用户@'网段或IP'; -- now, you can drop a procedure
grant execute on 数据库名.* to 用户@'网段或IP';
<15>创建用户并授予其对数据表中列的权限
如有很多列,要用逗号隔开
grant select(列的名字) on 数据库.数据表 to 用户@‘网段或ip’ identified by ‘密码';
<16>创建用户并授予对数据表中的存储过程和函数的权限
grant execute on procedure 数据库名.数据表名 to '用户'@'网段或IP' identified by '密码';
grant execute on function 数据库名.数据表名 to '用户'@'网段或IP' identified by '密码';
MySQL-技术专区-数据库权限管理的更多相关文章
- mysql用户授权、数据库权限管理、sql语法详解
mysql用户授权.数据库权限管理.sql语法详解 —— NiceCui 某个数据库所有的权限 ALL 后面+ PRIVILEGES SQL 某个数据库 特定的权限SQL mysql 授权语法 SQL ...
- MySQL数据库权限管理
# MySQL数据库权限管理 ### 前言------------------------------ 对不同的用户赋予不同级别的访问权限是个好习惯- 杜绝一些恶意用户 ### 参考资料------- ...
- MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置
文章目录 mysql配置文件 二进制日志log-bin 错误日志log-error 数据文件 两系统 Myisam存放方式 innodb存放方式 如何配置 mysql的用户与权限管理 MySQL的用户 ...
- MySQL 数据库--权限管理
权限管理 1.创建账号 创建本地账号 create user 'luke'@'localhost' identified by '123'; #mysql -uluke -p123 创建远程账号 cr ...
- Mysql新增用户,权限管理
MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant selec ...
- mysql创建用户和权限管理
一 权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作.那么一般情况在公司之后DBA工程师会创建 ...
- 【mysql】用户和权限管理
1.用户管理 相关命令如下 命令 描述 备注 create user zhang3 identified by '123123'; 创建名称为zhang3 的用户,密码设为123123: sele ...
- oracle数据库权限管理
权限管理: oracle 9里面默认的三个username和password: sys change_on_install //权限最高的管理员 system manager //普通的管理员 sco ...
- 三十.数据库服务概述 构建MySQL服务器 、 数据库基本管理 MySQL数据类型
mysql50:192.168.4.50 1.构建MySQL服务器 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 确认MySQL服务程序运行.root可控 ...
随机推荐
- Java常用的几个Json库,性能强势对比!
作者:飞污熊 https://xncoding.com/2018/01/09/java/jsons.html 本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能.每次都在网上看到别人说什 ...
- 同一台机器上有多个Python版本?
有关Python网站上的官方文档,如何在Linux上的同一台机器上安装和运行多个版本的Python? 我可以找到大量的博客帖子和答案,但我想知道是否有“标准”官方方式这样做? 或者这完全取决于操作系统 ...
- Centos 安装vnc / vncserver
一.安装 以root用户运行以下命令来安装vncserver; yum install tigervnc-server 同样运行以下命令来安装vncviewer; yum install vnc 停止 ...
- js确认末尾字符算法挑战
检查一个字符串(str)是否以指定的字符串(target)结尾. 如果是,返回true;如果不是,返回false. 这个挑战可以通过在ES2015中引入的.endsWith()方法来解决.但是出于这个 ...
- js高级编程思想
js惰性思想: 能够执行一次就搞定绝对不会执行第二次 function createXHR(){ var xhr=null, falg=false, ary=[ function(){ return ...
- 2018-2-13-win10-uwp-绑定密码
title author date CreateTime categories win10 uwp 绑定密码 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17: ...
- 第十一章 存储之ConfigMap
1.描述信息 ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息.ConfigMap API 给我们提供了向容器中注入配置 ...
- 十二、结构模式之门面(Facade)模式
什么是门面模式 门面模式(也有翻译为外观模式)是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面进行.其为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子 ...
- 生成token
利用中间件生成token 1.安装中间件 npm install jsonwebtoken 2. 使用 Sign() 里面有3个参数,第一个是token里面传递的数据 ,第二个是 key ,第三 ...
- 巨好看的xshell配色
推荐字体Lucida console [FlatUI] text=e5e5e5 cyan(bold)=16a085 text(bold)=ecf0f1 magenta=9b59b6 green=2ec ...