一、创建用户

CREATE USER  li@localhost IDENTIFIED BY 'li';

授予用户li数据库person的所有权限,并允许用户li将数据库person的所有权限授予其它用户

GRANT ALL ON PERSON.* TO li@localhost WITH GRANT OPTION;

立即生效,如果授予的权限没有生效执行以下命令,在5.6版本更改即会生效。

FLUSH PRIVILEGES;

GRANT创建用户

如果当前不存在用户,GRANT可以在授予权限的时候创建用户

授予用户数据库person所有表的select,insert权限。

GRANT SELECT,INSERT ON PERSON.* TO 'abc'@'localhost' identified by 'abc';

同时运行用户abc将person数据库的SELECT,INSERT权限授予给其它用户
GRANT SELECT,INSERT ON PERSON.* TO 'abc'@'localhost' identified by 'abc' with grant option;
创建用户root密码123456并赋予服务器所有权限,允许IP192.168.1.5的客户端连接。
grant all privileges on *.* to root@'192.168.1.5' identified by ''

退出当前用户

exit

查看当前用户的权限

show grants;

查看用户abc的权限

show grants for abc@localhost;

二、REVOKE回收权限

回收用户abc数据库person的insert的权限

REVOKE INSERT ON PERSON.* FROM abc@localhost;

回收权限

回收person数据库abc的所有权限
REVOKE ALL ON PERSON.* FROM abc@localhost; 回收abc的所有数据库所有权限
REVOKE ALL ON *.* FROM abc@localhost;

三、删除、修改用户

在早期版本需要回收用户的权限之后才能删除用户。删除用户建议使用这种办法,有的人会使用delete from user的办法删除,但是有的用户是针对db的权限那么在mysql.db里面也存在记录,而使用drop user的方式都会被删除。

DROP USER abc@localhost;

修改用户

RENAME USER  'test'@'127.0.0.1' TO  'test'@'%'

四、修改用户密码

use mysql;

UPDATE user SET password=PASSWORD('输入新密码') WHERE user='用户名';

FLUSH PRIVILEGES;

五、相关权限授予

1.创建root用户

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;

2.创建一个服务器基本的增删改查用户

GRANT UPDATE, DELETE, INSERT, SELECT ON *.* TO 'test'@'%' identified by 'test' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0

3.创建数据库基本的增删改查用户

GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW, EXECUTE ON `new`.* TO 'test'@'%' identified by  'test';

4.授予数据库名以db开头的数据库的权限

GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW, EXECUTE ON `db%`.* TO 'perform'@'%'

5.创建备份用户权限

GRANT SELECT,EVENT,SHOW DATABASES,LOCK TABLES,SUPER,REPLICATION CLIENT,RELOAD ON *.* TO 'backup'@'localhost' identified by 'backup'

6.备份恢复用户权限

GRANT INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON *.* TO 'restore'@'localhost' identified by '123456'

7.复制用户权限

GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY '123456';

六、权限表字段详解

基于mysql5.6

user表

user表的权限是基于服务器范围的所有权限,比如用户拥有服务器中所有数据库的select权限那么在user表中的Select_priv列为Y,如果用户单单只拥有某个一数据库的select权限那么user表中的Select_priv为N,会在DB表中记录一条信息在DB表中的select_priv为Y。

desc mysql.user;

filed                  type                            null key default

Host char(60)     NO    PRI         主机名,localhost表示本地登入,%表示不受限制,也可以单独赋予某个IP的访问权限。  
User char(16) NO PRI   登入用户名 
Password char(41) NO     登入用户密码 
Select_priv enum('N','Y') NO   N select权限 
Insert_priv enum('N','Y') NO   N insert权限
Update_priv enum('N','Y') NO   N update权限 
Delete_priv enum('N','Y') NO   N delete权限 
Create_priv enum('N','Y') NO   N create权限 
Drop_priv enum('N','Y') NO   N drop权限
Reload_priv enum('N','Y') NO   N 执行刷新和重新加载MySQL各种内部缓存命令的权限 
Shutdown_priv enum('N','Y') NO   N 关闭mysql服务器的权限,不能授予root外的其它用户 
Process_priv enum('N','Y') NO   N 执行show processlist命令的权限 
File_priv enum('N','Y') NO   N 执行SELECT INTO OUTFILE和LOAD DATA INFILE命令 
Grant_priv enum('N','Y') NO   N 是否可以将权限授予其它用户 
References_priv enum('N','Y') NO   N 参照表的权限
Index_priv enum('N','Y') NO   N 创建删除索引的权限 
Alter_priv enum('N','Y') NO   N ALTER权限 
Show_db_priv enum('N','Y') NO   N 查看有哪些数据库的权限
Super_priv enum('N','Y') NO   N Super权限,包括kill权限。 
Create_tmp_table_priv enum('N','Y') NO   N 创建创建临时表权限 
Lock_tables_priv enum('N','Y') NO   N 执行lock table权限 
Execute_priv enum('N','Y') NO   N 执行存储过程权限 
Repl_slave_priv enum('N','Y') NO   N 复制相关的权限 
Repl_client_priv enum('N','Y') NO   N 复制相关的权限 
Create_view_priv enum('N','Y') NO   N 创建视图的权限 
Show_view_priv enum('N','Y') NO   N 查看视图的权限 
Create_routine_priv enum('N','Y') NO   N 创建函数、存储过程等权限 
Alter_routine_priv enum('N','Y') NO   N 修改删除函数、存储过程等权限 
Create_user_priv enum('N','Y') NO   N 创建用户的权限 
Event_priv enum('N','Y') NO   N 创建、修改和删除事件的权限 
Trigger_priv enum('N','Y') NO   N 创建、修改和删除触发器的权限 
Create_tablespace_priv enum('N','Y') NO   N 创建表空间的权限 
ssl_type enum('','ANY','X509','SPECIFIED') NO      
ssl_cipher blob NO      
x509_issuer blob NO      
x509_subject blob NO      
max_questions int(11) unsigned NO   0 最多问题数 
max_updates int(11) unsigned NO   0 允许的最大更新 
max_connections int(11) unsigned NO   0 允许的最大连接 
max_user_connections int(11) unsigned NO   0  
plugin char(64) YES      
authentication_string text YES      
password_expired enum('N','Y') NO   N  

db表

如果授予一个用户单独某个数据库的权限,就会在db表中记录一条相关信息。

desc mysql.db;

filed                  type          null    key   default

Host                            char(60)                  NO         PRI                   主机名,localhost代表只能本地登入,如果是%表示不受限制,也可以单独赋予某个IP的访问权限。
Db char(64) NO PRI   数据库名 
User char(16) NO PRI   用户名 
Select_priv enum('N','Y') NO   N select权限 
Insert_priv enum('N','Y') NO   N insert权限 
Update_priv enum('N','Y') NO   N update权限 
Delete_priv enum('N','Y') NO   N delete权限 
Create_priv enum('N','Y') NO   N create权限 
Drop_priv enum('N','Y') NO   N drop权限 
Grant_priv enum('N','Y') NO   N 是否可以将权限授予其它用户  
References_priv enum('N','Y') NO   N  
Index_priv enum('N','Y') NO   N 创建删除索引的权限 
Alter_priv enum('N','Y') NO   N ALTER权限 
Create_tmp_table_priv enum('N','Y') NO   N 创建临时表的权限 
Lock_tables_priv enum('N','Y') NO   N 执行lock table权限 
Create_view_priv enum('N','Y') NO   N 创建视图的权限 
Show_view_priv enum('N','Y') NO   N 查看视图的权限 
Create_routine_priv enum('N','Y') NO   N 创建函数、存储过程的权限 
Alter_routine_priv enum('N','Y') NO   N 修改删除函数、存储过程的权限  
Execute_priv enum('N','Y') NO   N 执行存储过程的权限 
Event_priv enum('N','Y') NO   N 创建、修改、删除事件的权限 
Trigger_priv enum('N','Y') NO   N 创建、修改、删除触发器的权限 

总结

使用revoke all privileges并不能收回用户的所有权限,对于用户的单个数据库的权限需要单独回收,具体可以查询mysql.db数据库查看用户的每个数据库的具体权限,如果用户权限太多最快的回收权限的方法是删除该用户再重新授予用户新的权限

注意:给一个数据库授予一个用户不同连接方式的权限,mysql使用低权限的原则。

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

《欢迎交流讨论》

MySQL 权限的更多相关文章

  1. MySQL 权限与安全

    一.MySQL权限系统通过两个阶段进行认证: (A) 对用户进行身份认证,IP地址和用户名联合, (B) 对合法用户赋予相应权限,权限表在数据库启动的时候载入内存中. 二.在权限的存取过程中,会用到& ...

  2. mysql权限管理

    经常遇到有网友在QQ群或者论坛上问关于mysql权限的问题,今天抽空总结一下关于这几年使用MYSQL的时候关于MYSQL数据库的权限管理的经验,也希望能对使用mysql的网友有所帮助! 一.MYSQL ...

  3. mysql权限与安全

    一.MySQL权限系统通过两个阶段进行认证: (A) 对用户进行身份认证,IP地址和用户名联合, (B) 对合法用户赋予相应权限,权限表在数据库启动的时候载入内存中. 二.在权限的存取过程中,会用到& ...

  4. MYSQL权限表user操作

        MYSQL权限表user cmd中进人mysql找到mysql安装目录     E:\wamp\bin\mysql\mysql5.6.12\bin>mysql.exe -u 用户名  - ...

  5. 【MySQL学习笔记】MySQL权限表

    MySQL权限表,控制用户对数据库的访问,存在mysql数据库中,由mysql_install_db初始化,包括user,db,host,tables_priv,columns_priv,procs_ ...

  6. mysql 权限控制

    1.mysql的权限是,从某处来的用户对某对象的权限. 2.mysql的权限采用白名单策略,指定用户能做什么,没有指定的都不能做. 3.权限校验分成两个步骤: a.能不能连接,检查从哪里来,用户名和密 ...

  7. Mysql权限控制 - 允许用户远程连接

    Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...

  8. mysql权限及用户

    一:Flush table tables_name MySQL的FLUSH句法(清除或者重新加载内部缓存) FLUSH flush_option [,flush_option],如果你想要清除一些My ...

  9. mysql 权限管理

     参考:    http://www.cnblogs.com/Richardzhu/p/3318595.html 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内 ...

  10. Mysql权限控制 - 允许用户远程连接(转载)

    Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...

随机推荐

  1. 【leetcode】LRU Cache

    题目简述: Design and implement a data structure for Least Recently Used (LRU) cache. It should support t ...

  2. iOS之使用模拟器报错:resource fork, Finder information, or similar detritus not allowed

    很奇怪的问题,使用真机测试没有问题.但使用模拟器测试的时候就会报这样的错误,错误类型为:Code Sign Error 错误提示是这样:resource fork, Finder informatio ...

  3. sql union和union all的用法及效率

    UNION指令的目的是将两个SQL语句的结果合并起来.从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料. UNION的一个限制是两个 ...

  4. LeetCode 104. Maximum Depth of Binary Tree

    Problem: Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along ...

  5. React 学习,需要注意几点

    最近要开始学习 React 框架了,在学习的过程中,个人作为一个新手觉得需要注意的一些问题 小细节有以下几点: 1:在JSX语法当中,如果遇到 HTML 标签(以 < 开头),将用 HTML 规 ...

  6. 【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 数位DP

    [BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩"石头剪刀布"来任意地决定例如谁 ...

  7. 【转】Oracle索引HINT的使用

    转自:Oracle索引HINT的使用       存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查 ...

  8. canvas小结

    前段时间在公司没什么事干,研究了一下canvas,在实际开发中还没正式应用过,但是已经深深感觉到其魅力之处.下面写一写我认为canvas中比较重要的点,如有理解错误,欢迎指正. 首先canvas是h5 ...

  9. git flow工作流实际项目实践

    公司项目的开发流程主要是这样 代码分为 develop分支 master分支 平时我开发的时候,主要在develop分支上改动 一般来讲,有以下几种改动方式 1.直接在develop上修改代码 这种一 ...

  10. 如何删除 eclipse debugger 下不用的Java Application

    问题描述:之前写了几个 main 函数 用于测试,现在删除掉了 但是debugger下还存在,看着不爽,想删掉 解决方案: 1.项目--右键 2.删掉就可以了