MySQL权限管理

Jack088 2020-11-06 21:19:47
apache Mysql


用户和权限管理:

语法

grant 权限 on 数据库.数据表 to '用户' @ '主机名';

例:给 xiaogang 分配所有的权限

grant all on *.* to 'xiaogang'@'%';

这个时候 xiaogang 就拥有了 所有权限了

权限列表

权限

说明

举例

usage

连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。

mysql>  grant usage on *.* to 'root′@'localhost' identified by '123';

该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。

file

拥有file权限才可以执行  select ..into outfile和load data infile…操作,但是不要把file, process,  super权限授予管理员以外的账号,这样存在严重的安全隐患。

mysql>  grant file on *.* to root@localhost;

mysql> load data infile '/home/mysql/pet.txt' into table pet;

super

这个权限允许用户终止任何查询;修改全局变量的SET语句;使用CHANGE  MASTER,PURGE MASTER LOGS。

mysql>  grant super on *.* to root@localhost;

mysql> purge master logs before 'mysql-bin.000006′;

select

必须有select的权限,才可以使用select  table

mysql>  grant select on pyt.* to 'root′@'localhost';

mysql> select * from shop;

insert

必须有insert的权限,才可以使用insert  into ….. values….

mysql>  grant insert on pyt.* to 'root′@'localhost';

mysql> insert into shop(name) values('aa');

update

必须有update的权限,才可以使用update  table

mysql>  update shop set price=3.5 where article=0001 and dealer='A';

delete

必须有delete的权限,才可以使用delete  from ….where….(删除表中的记录)

mysql>  grant delete on pyt.* to 'root′@'localhost';

mysql> delete from table where id=1;

alter

必须有alter的权限,才可以使用alter  table

mysql>  alter table shop modify dealer char(15);

alter routine

必须具有alter  routine的权限,才可以使用{alter |drop} {procedure|function}

mysql>grant  alter routine on pyt.* to 'root′@' localhost ‘;

mysql> drop procedure pro_shop;

Query OK, 0 rows affected (0.00 sec)

create

必须有create的权限,才可以使用create  table

mysql>  grant create on pyt.* to 'root′@'localhost';

drop

必须有drop的权限,才可以删除库、表、索引、视图等

mysql>  drop database db_name;

mysql> drop table tab_name;

mysql> drop view vi_name;

mysql> drop index in_name;

create routine

必须具有create  routine的权限,才可以使用{create |alter|drop} {procedure|function}

mysql>  grant create routine on pyt.* to 'root′@'localhost';

当授予create routine时,自动授予EXECUTE, ALTER ROUTINE权限给它的创建者:

create temporary tables

(注意这里是tables,不是table)

必须有create  temporary tables的权限,才可以使用create temporary tables.

mysql> grant create temporary tables on pyt.* to  'root′@'localhost';

[mysql@mydev ~]$ mysql -h localhost -u root -p pyt

mysql> create temporary table tt1(id int);

create view

必须有create  view的权限,才可以使用create view

mysql>  grant create view on pyt.* to 'root′@'localhost';

mysql> create view v_shop as select price from shop;

create user

要使用CREATE  USER,必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。

mysql>  grant create user on *.* to 'root′@'localhost';

或:mysql> grant insert on *.* to root@localhost;

show database

通过show  database只能看到你拥有的某些权限的数据库,除非你拥有全局SHOW DATABASES权限。

mysql>  show databases;

对于root@localhost用户来说,没有对mysql数据库的权限,所以以此身份登陆查询时,无法看到mysql数据库:

show view

必须拥有show  view权限,才能执行show create view

mysql>  show create view name;

index

必须拥有index权限,才能执行[create  |drop] index

mysql>  grant index on pyt.* to root@localhost;

mysql> create index ix_shop on shop(article);

mysql> drop index ix_shop on shop;

excute

执行存在的Functions,Procedures

mysql>  call pro_shoroot(0001,@a);

event

event的使用频率较低建议使用root用户进行创建和维护。

mysql>  show global variables like 'event_scheduler';

要使event起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1

lock tables

必须拥有lock  tables权限,才可以使用lock tables

mysql>  grant lock tables on pyt.* to root@localhost;

mysql> lock tables a1 read;

mysql> unlock tables;

references

有了REFERENCES权限,用户就可以将其它表的一个字段作为某一个表的外键约束。

 

reload

必须拥有reload权限,才可以执行flush  [tables | logs | privileges]

mysql>  grant reload on pyt.* to root@localhost;

ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

mysql> grant reload on *.* to 'root′@'localhost';

Query OK, 0 rows affected (0.00 sec)

mysql> flush tables;

replication client

拥有此权限可以查询master  server、slave server状态。

mysql>  grant Replication client on *.* to root@localhost;

或:mysql> grant super on *.* to root@localhost;

mysql> show master status;

replication slave

拥有此权限可以查看从服务器,从主服务器读取二进制日志。

mysql>  grant replication slave on *.* to root@localhost;

mysql> show slave hosts;

Empty set (0.00 sec)

mysql>show binlog events;

Shutdown

关闭mysql权限

[mysql@mydev  ~]$ mysqladmin shutdown

grant option

拥有grant  option,就可以将自己拥有的权限授予其他用户(仅限于自己已经拥有的权限)

mysql>  grant Grant option on pyt.* to root@localhost;

mysql> grant select on pyt.* to p2@localhost;

process

通过这个权限,用户可以执行SHOW  PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程。

mysql>  show processlist;

all privileges

所有权限。with  grant option 可以连带授权

mysql>  grant all privileges on pyt.* to root@localhost with grant option;

·  管理权限(如 super, process, file等)不能够指定某个数据库,on后面必须跟 *.*

·   有人会问truncate权限呢,其实truncate权限就是create+drop,这点需要注意

查看用户授权信息

mysql> show grants for bzfys;

+-------------------------------------------------------------------------------------------------------+

| Grants for bzfys@%                                                                                   |

+-------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO bzfys@'%' IDENTIFIED BY PASSWORD '*A399693A49F7EC7C548D0FC376FA52AD293A552F' |

+-------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

一般情况赋予的权限

用户管理

mysql>use mysql;

一、查看

mysql> select host,user,password from user ;

二、创建

mysql> create user  bzfys   IDENTIFIED by 'xxxxx';   //identified by 会将纯文本密码加密作为散列值存储

三、修改

mysql>rename   user  bzfys to   buzaifengyaosha;//mysql 5之后可以使用,之前需要使用update 更新user表

四、删除

mysql>drop user buzaifengyaosha;   //mysql5之前删除用户时必须先使用revoke 删除用户权限,然后删除用户,mysql5之后drop 命令可以删除用户的同时删除用户的相关权限

五、更改密码(如果找回root密码必须用这种方式)

mysql> set password for bzfys =password('xxxxxx');

 mysql> update  mysql.user  set  password=password('xxxx')  where user=’bzfys’;5.8以后需要修改的列为authentication_string列update  mysql.user  set  authentication_string=password('xxxx')  where user=’bzfys’

六、查看用户权限

mysql> show grants for bzfys;

七、赋予权限

mysql> grant select on bzfys_db.*  to bzfys;

回收权限

mysql> revoke  select on bzfys_db.*  from  bzfys;  //如果权限不存在会报错

 上面的命令也可使用多个权限同时赋予和回收,权限之间使用逗号分隔

mysql> grant select,update,delete  ,insert  on bzfys_db.*  to  bzfys;

如果想立即看到结果使用

flush  privileges ;

命令更新 

设置权限时必须给出一下信息

1,要授予的权限

2,被授予访问权限的数据库或表

3,用户名

grant和revoke可以在几个层次上控制访问权限

1,整个服务器,使用 grant ALL  和revoke  ALL

2,整个数据库,使用on  database.*

3,特点表,使用on  database.table

4,特定的列

5,特定的存储过程

user表中host列的值的意义

%              匹配所有主机

localhost    localhost不会被解析成IP地址,直接通过UNIXsocket连接

127.0.0.1      会通过TCP/IP协议连接,并且只能在本机访问;

::1                 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1

grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。

grant select on testdb.* to common_user@’%’

grant insert on testdb.* to common_user@’%’

grant update on testdb.* to common_user@’%’

grant delete on testdb.* to common_user@’%’

或者,用一条 MySQL 命令来替代:

grant select, insert, update, delete on testdb.* to common_user@’%’

9>.grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。

grant 创建、修改、删除 MySQL 数据表结构权限。

grant create on testdb.* to developer@’192.168.0.%’;

grant alter on testdb.* to developer@’192.168.0.%’;

grant drop on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 外键权限。

grant references on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 临时表权限。

grant create temporary tables on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 索引权限。

grant index on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 视图、查看视图源代码 权限。

grant create view on testdb.* to developer@’192.168.0.%’;

grant show view on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 存储过程、函数 权限。

grant create routine on testdb.* to developer@’192.168.0.%’; -- now, can show procedure status

grant alter routine on testdb.* to developer@’192.168.0.%’; -- now, you can drop a procedure

grant execute on testdb.* to developer@’192.168.0.%’;

10>.grant 普通 DBA 管理某个 MySQL 数据库的权限。

grant all privileges on testdb to dba@’localhost’

其中,关键字 “privileges” 可以省略。

11>.grant 高级 DBA 管理 MySQL 中所有数据库的权限。

grant all on *.* to dba@’localhost’

12>.MySQL grant 权限,分别可以作用在多个层次上。

1. grant 作用在整个 MySQL 服务器上:

grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表。

grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库

2. grant 作用在单个数据库上:

grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。

3. grant 作用在单个数据表上:

grant select, insert, update, delete on testdb.orders to dba@localhost;

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to dba@localhost;

5. grant 作用在存储过程、函数上:

grant execute on procedure testdb.pr_add to ’dba’@’localhost’

grant execute on function testdb.fn_add to ’dba’@’localhost’

注意:修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用:FLUSH PRIVILEGES。

grant create routine, alter routine, execute ON `blacklist`.* TO 'blacklist'@'%';

create routine创建存储过程

alter routine, 修改存储过程

execute:执行存储过程

(adsbygoogle = window.adsbygoogle || []).push({});

版权声明
本文为[Jack088]所创,转载请带上原文链接,感谢
https://my.oschina.net/jack088/blog/4706118

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云