Mysql 用户,权限管理的几点理解。
前两天项目数据库要移植到mysql,为此临时抓了几天很久没用的mysql。
公司的数据库比较简单,从oracle迁移到mysql很简单,但是,中间的权限管理让我感觉既简单又复杂。。简单是因为网上关于mysql用户,权限管理的帖子很多,
按照上面的做,基本上能解决遇到的问题。复杂是因为如果考虑的特殊的场景,权限管理会让很多新手蛋疼的不要不要的。
mysql权限的基础我在这里就不讲了,大家一艘一大把,我这里主要就我的理解在前人基础上做一些解读。公司用的是mysql5.5,所以我的解读仅限于这个版本。其他版本大家自行实验。
1. %和localhost
grant all on *.* to watf@'%';
grant all on *.* to watf@'localhost';
按照我开始的理解,%是代表所有的主机;localhost本地主机,也就是安装mysql的主机。but,这个理解是有问题的。
用第一种授权方式并没有获得本地主机的权限。所以localhost并不是%的子集, 远程主机和本地主机请分别授权。
2. grant all on *. * to dbtest@'localhost' identified by 'dbtest';
解释:已有dbtest用户,这是在授权兼改密码 ,没有dbtest的情况下是创建带密码用户兼授权。所以还可以用grant命令建用户,改密码,尼玛又多了一项技能有没有。看见不少人授权时用的带密码的方式,我怀疑他们认为这个密码仅仅是用来验证的。假如这个密码输的和原来的不一致,尼玛后面登录不了恐怕他也不知道咋回事。
3. set password for root=password('root') 是否等同于 update mysql.user set password=password('root') where user='root';
看到不少帖子认为这两种改密码的方式是相同的。我想说No,
set password for root=password('root') 等同于 set password for root@'%'=password('root') ,
所以同样应该等同于 update mysql.user set password=password('root') where user='root' and host='%';如果root分别设置了'localhost'和'%'的密码,用第一种改密码方式只会修改远程登录root用户的密码,第二种方式远程和本地登录root用户的密码都会修改。
另外,第一种是系统定义的修改密码的方式,可能会牵扯到多张表或者其他操作,而第二种只是修改了用户表而已,除非有明确的官方说明,修改密码只需要修改用户表,和其他表无关,没有其他多余操作,否则,我真的不建议用第二种方式。
4. drop user aaa;
你以为这个会让aaa用户不能登录么?错,实际上这个只能让远程用户就不能登录,本地用户(如果有的话),照登不误。
原因其实和第一个问题一样,还是%和localhost的区别,因为drop user aaa; 等同于drop user aaa@'%';
另外,有人说可以用delete from mysql.user where user='aaa';这样做确实会让用户不能登录,可以简单的认为删除了用户,但是实际上用户的权限,数据库 都没有删除,这样只是自欺欺人。
Mysql 用户,权限管理的几点理解。的更多相关文章
- MYSQL用户权限管理学习笔记
MYSQL 用户管理 1.权限表 MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类: (1) 超级管理员用户(root),拥有全部权限 (2) 普通用户,由roo ...
- Mysql 用户权限管理
1. MySQL 权限介绍 mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表,我当前的版本mysql 5.7.22 . mysql权限表 ...
- Mysql 用户权限管理--从 xxx command denied to user xxx
今天遇到一个mysql 权限的问题,即标题所述 xxx command denied to user xxx,一般mysql 这种报错,基本都属于当前用户没有进行该操作的权限,需要 root 用户授 ...
- MYSQL用户权限管理GRANT使用
http://yanue.net/post-97.html GRANT语句的语法: mysql> grant 权限1,权限2,-权限n on 数据库名称.表名称 to 用户名@用户地址 iden ...
- mysql 用户权限管理详细
用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user ...
- mysql用户权限管理
参考文章:http://www.cnblogs.com/jackruicao/p/6068821.html?utm_source=itdadao&utm_medium=referral (1) ...
- MYSQL用户权限管理(Grant,Revoke)
MySQL可以为不同的用户分配严格的.复杂的权限.这些操作大多都可以用SQL指令Grant(分配权限)和Revoke(回收权限)来实现. Grant可以把指定的权限分配给特定的用户,如果这个用户不存在 ...
- mysql用户权限管理的问题
为了保证数据库安全,建立了若干个只能select的用户,但在权限授权的时候出现了不能连接的问题, 一个个尝试了一下,需要将 : 管理 -> SUPER项勾选才行(使用phpmyadmin),上 ...
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- Mysql数据库用户及用户权限管理,Navicat设置用户权限
Mysql数据库用户及用户权限管理,Navicat设置用户权限 一.Mysql数据库的权限 1.1 mysql数据库用户权限级别 1.2 mysql数据库用户权限 1.3 存放用户权限表的说明 二.用 ...
随机推荐
- 一步步带你做vue后台管理框架(三)——登录功能
系列教程<一步步带你做vue后台管理框架>第三课 github地址:vue-framework-wz 线上体验地址:立即体验 <一步步带你做vue后台管理框架>第一课:介绍框架 ...
- sscanf和正则表达式
sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var ...
- Hibernate的Configuration对象的configure()方法
Configuration configuration=new Configuration(); configuration.configure(); 在Hibernate底层实现configure( ...
- JDBC在javaweb中的应用之分页数据查询
分页查询 分页查询是java web开发中经常使用到的技术.在数据库中数据量非常大的情况下,不适合将所有的数据全部显示到一个页面中,同时为了节约程序以及数据库的资源,就需要对数据进行分页查询操作. 通 ...
- ubuntu下程序员常用命令大全
一.ubuntu下用命令查询系统版本 1.在终端中执行下列指令: cat /etc/issue 该命令可查看当前正在运行的ubuntu的版本号. 效果如图: 2.使用 lsb_release 命令也可 ...
- 使用 Dawn 构建 React 项目
开发一个 React 项目,通常避免不了要去配置 Webpack 和 babel 之类,以支持 commonjs 或 es 模块及各种 es 新语法,及及进行 jsx 语法的转义.当然也可以用 cre ...
- hibernate学习手记(2)
1.javax.persistence.TransactionRequiredException: no transaction is in progress 出现该问题是我没有开启事务,我是在保存之 ...
- jmeter3.3测试需要登录的接口(java)
1.新建线程组-略过 2.右键线程组->添加->配置元件->HTTP授权管理器 3.右键线程组->添加->配置元件->HTTP信息头管理器 4.右键线程组-> ...
- UNREFERENCED_PARAMETER
作用:告诉编译器,已经使用了该变量,不必检测警告! 在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告.当你生命了一个变量,而没有使用时,编译器就会报警告:" ...
- Uva 3708 Graveyard
题意:在周长为10000的圆上等距分布着n个雕塑.现在又有m个新雕塑加入(位置可以随意放),希望所有n+m个雕塑在圆周上均匀分布. 这就需要移动其中一些原有的雕塑.要求n个雕塑移动的距离最小. (2& ...