前言

  学习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-技术专区-数据库权限管理的更多相关文章

  1. mysql用户授权、数据库权限管理、sql语法详解

    mysql用户授权.数据库权限管理.sql语法详解 —— NiceCui 某个数据库所有的权限 ALL 后面+ PRIVILEGES SQL 某个数据库 特定的权限SQL mysql 授权语法 SQL ...

  2. MySQL数据库权限管理

    # MySQL数据库权限管理 ### 前言------------------------------ 对不同的用户赋予不同级别的访问权限是个好习惯- 杜绝一些恶意用户 ### 参考资料------- ...

  3. MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

    文章目录 mysql配置文件 二进制日志log-bin 错误日志log-error 数据文件 两系统 Myisam存放方式 innodb存放方式 如何配置 mysql的用户与权限管理 MySQL的用户 ...

  4. MySQL 数据库--权限管理

    权限管理 1.创建账号 创建本地账号 create user 'luke'@'localhost' identified by '123'; #mysql -uluke -p123 创建远程账号 cr ...

  5. Mysql新增用户,权限管理

    MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant selec ...

  6. mysql创建用户和权限管理

    一 权限管理 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作.那么一般情况在公司之后DBA工程师会创建 ...

  7. 【mysql】用户和权限管理

    1.用户管理 相关命令如下 命令 描述 备注 create user zhang3 identified by '123123'; 创建名称为zhang3 的用户,密码设为123123:   sele ...

  8. oracle数据库权限管理

    权限管理: oracle 9里面默认的三个username和password: sys change_on_install //权限最高的管理员 system manager //普通的管理员 sco ...

  9. 三十.数据库服务概述 构建MySQL服务器 、 数据库基本管理 MySQL数据类型

    mysql50:192.168.4.50 1.构建MySQL服务器 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 确认MySQL服务程序运行.root可控 ...

随机推荐

  1. VS 2017产品秘钥

    Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH

  2. five hundred miles

  3. windows修改docker的默认存放位置

    docker默认存储到c盘,我需要移动到其他盘. 参考了网上很多资料,结果要么移动不了,要么重启docker就回到c盘了. 最后参考docker的官方论坛,找到了解决方案.https://forums ...

  4. 【学习总结】Python-3-身份运算符 is 与 == 区别

    参考:菜鸟教程-Python3运算符 身份运算符 is 和 is not:用于比较两个对象的存储单元 判断两个标识符是不是引用自相同或不同对象,返回一个布尔值 对于"同一个对象"中 ...

  5. GeneXus笔记本—获取当月的最后一天

    首先获取当前日期 然后赋值为当前年月的第一天  然后加一个月 减去一天 就是当月最后一天 多用于筛选数据时的条件或者区间 我们先随便拉个页面  简单点就好 放入两个textblock 然后点击Even ...

  6. 2018-8-10-win10-UWP-用Path画图

    title author date CreateTime categories win10 UWP 用Path画图 lindexi 2018-08-10 19:16:50 +0800 2018-2-1 ...

  7. ubuntu18.04 -- 创建第一个Django项目

    step1: 安装虚拟环境: sudo pip3 install virtualenv # 安装虚拟环境sudo pip3 install virtualenvwrapper # 安装虚拟环境扩展包# ...

  8. div标准布局示例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. SQL的子查询与JOIN的小试牛刀

    //学生表CREATE TABLE student( ID INT PRIMARY KEY, s_name ) NOT NULL, class_id INT NOT NULL); , "qf ...

  10. oracle时间问题 与case then

    思路一 --select * from nls_session_parameters where parameter='NLS_DATE_LANGUAGE'; -- 修改会话的默认日期格式 ALTER ...