数据库——MySQL——权限管理
关于MySQL的权限管理,可以理解为是MySQL运行你做的事情。比如MySQL允许你执行select操作那么你就不能用update操作。如果你让你在某台机器上连接MySQL,那么你就不能在这个机器以外的其他机器上连接MySQL。
关于MySQL的权限验证分为两个阶段:
第一阶段:服务器首先会检查你是否允许连接。因为创建用户的时候会加上主机限制,可以限制成本地、某个IP、某个IP段、以及任何地方等,只允许你从配置的指定地方登陆。
第二阶段:如果你能连接,Mysql会检查你发出的每个请求,看你是否有足够的权限实施它。比如你要更新某个表、或者查询某个表,Mysql会查看你对哪个表或者某个列是否有权限。再比如,你要运行某个存储过程,Mysql会检查你对存储过程是否有执行权限等。
下面是官网给出的MySQL的权限:

一般我们自己用都是用的root最高权限用户,但是工作中基本都是已经有自己单独的已经被分配好权限的账号。
关于用户操作
创建用户
命令
create user "username"@"host" identified by "password";
说明
- username:你将要创建的用户名
- host:指定该用户在哪个主机上可以登陆,如果是本地用户可以用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符"%"
- password:该用户的登陆密码,密码可以为空,如果为空该用户可以不需要密码登陆服务器。
例子
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';
注:有的MySQL版本给用户设置了%允许任何地方登陆,但是本地登陆不了,遇到这个问题,加上localhost的用户就可以了。
设置和更改用户密码
命令
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果是当前登陆用户用:
SET PASSWORD = PASSWORD("newpassword");
例子
SET PASSWORD FOR 'pig'@'%' = PASSWORD("");
修改用户名
RENAME user " 'oldusername'@'host' to 'newusername'@'host'
删除用户
DROP USER 'username'@'host';
关于授权
授权
在一开始给出的权限表中,我们要注意到关于权限有四个大方向,针对所有数据,针对某个数据库,针对某个表,针对某一字段。
命令
grant privileges on databasesname.tablename to "username"@"host"
说明
- privileges:用户的操作权限,比如select,insert,update等,如果要授予所有权限,用all。
- databasesname:数据库名
- tablename:表名,如果要授予该用户所有数据库和所有表的相关权限,用*.*。
- 用上面的命令授权的用户不能给其他用户授权,如果想让该用户可以给其他用户授权,可以用
grant privileges on databasesname.tablename to "username"@"host" with grant option;
例子
grant all on *.* to "pig";
grant select, insert on test.* to "pig"@"%";
grant select, insert on test.user to "pig"@"%";
grant select (id,name),update (age) on test.user to "pig"@"%";
刷新权限
使用这个命令使授权生效
flush privileges;
查看权限
# 查看当前用户的权限
show grants; # 查看某个用户的权限
show grants for "username"@"host" 或者show grants for "username"
回收权限
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
privilege, databasename, tablename:同授权部分
注意:
假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%',则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作。
相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select权限。
具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看。
数据库——MySQL——权限管理的更多相关文章
- mysql权限管理
经常遇到有网友在QQ群或者论坛上问关于mysql权限的问题,今天抽空总结一下关于这几年使用MYSQL的时候关于MYSQL数据库的权限管理的经验,也希望能对使用mysql的网友有所帮助! 一.MYSQL ...
- mysql权限管理命令示例
mysql权限管理命令示例 grant all privileges on *.* to *.* identified by 'hwalk1'; flush privileges; insert in ...
- mysql 权限管理介绍
mysql权限管理 就是对控制用户对库.对表的权限.对表中字段权限 权限管理分步 1.创建账号 创建账号有本地账号和远程账号 本地账号 本地账号只能在mysql服务端机器做操作 '; # mysql ...
- MySQL权限管理、配置文件(三)
一.MySQL权限管理 GRANT 权限 ON 授权范围 TO '用户名'@'允许的ip(所有%)' IDENTIFIED BY '用户密码'; 权限:参加下表,一般常用的是CREATE.DELETE ...
- MySQL权限管理实战
前言: 不清楚各位同学对数据库用户权限管理是否了解,作为一名 DBA ,用户权限管理是绕不开的一项工作内容.特别是生产库,数据库用户权限更应该规范管理.本篇文章将会介绍下 MySQL 用户权限管理相关 ...
- mysql 权限管理 目录
mysql 权限管理介绍 mysql 权限管理 记录 mysql 权限管理 grant 命令 mysql 权限管理 revoke 回收权限 命令 mysql 权限管理 针对库 授权 db.* mysq ...
- mysql 权限管理
参考: http://www.cnblogs.com/Richardzhu/p/3318595.html 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内 ...
- python之路--MySQL权限管理 数据备份还原
一 权限管理 mysql最高管理者是root用户, 这个一般掌握在公司DBA手里, 当你想去对数据库进行一些操作的时候,需要DBA授权给你. 1. 对新用户增删改 1. 创建用户 # 要先use my ...
- MySQL权限管理分配
之前一直忽视了MySQL的权限这一块的内容,以为一般般的知识点,随时用随时学就好了,导致自己这方面稍微有点不太明白的地方,总是踩坑,所以后来就总结一下: 1.MySQL权限系统的工作原理 .对连接的用 ...
随机推荐
- ztree使用方法 python后台
一.在提前加载js的地方写一段js,判断该页面是否需要添加ztree,我的项目所有提前加载的js都写在admin.js中 //增加ztree $(document).ready(function() ...
- 关于两个 IQueryable 合并
原先根据需求要对数据进行两种筛选,起初写过滤条件,但是过滤后发现有的数据重叠.因此改为查询两次. 因为查询后返回的是两个相同的.匿名的 IQueryable ,最终的目的是想两个 类型结合成一个. 参 ...
- Distinct 去掉重复 order by
语法: select distinct user from book select * from sdudant order by sex asc,sNo 从表sdudant查找已性别升序排序,性别相 ...
- Mac 10.11.4 安装mysql-5.7.13 默认密码问题
今天下载了一个最新版的mysql dmg安装包来安装mysql,安装的整个过程竟然都没有提示输入root用户默认密码,我也没太在意,然后连接数据库时竟然提示输入密码,当时就一脸懵逼了.尝试各种密码,为 ...
- unity3D使用C#遍历场景内所有元素进行操作
最近入门Unity3D,跟着教程做完了survival射击游戏,就想加一个功能,就是按一个按钮屏幕上的怪物都清空. 如图右下角所示. 我的方法是赋予所有怪物一个标签Tag,然后根据标签销毁Gameob ...
- js原生拖拽
style样式 <style type="text/css"> #box{ width: 100px; height: 100px; background: deepp ...
- PopupWindow简单使用
如图是效果图 当点击 “点我”的按钮是 会弹出 如图的 弹窗 补充为PopupWindow设置一个显示动画和消失的动画 先在anim的文件下分别设置显示和消失的动画 <?xml versio ...
- Socket.Receive 无法预知字节长度的数据接收
话不多说直接上代码: string recvStr = ""; byte[] recvBytes = new byte[1024]; int bytes; do { bytes = ...
- Qtl和JS、HTML通信/交互
http://www.cnblogs.com/sigma0/p/7346727.html Qt的QWebChannel和JS.HTML通信/交互驱动百度地图 0 前言 我一个研究嵌入式的,不知道怎么就 ...
- 面向对象设计中private,public,protected的访问控制原则及静态代码块的初始化顺序
第一:private, public, protected访问标号的访问范围. private:只能由 1.该类中的函数 2.其友元函数访问 不能被任何其他访问,该 ...