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 存放用户权限表的说明 二.用 ...
随机推荐
- Hyperledger Fabric 1.0 从零开始(七)——启动Fabric多节点集群
5:启动Fabric多节点集群 5.1.启动orderer节点服务 上述操作完成后,此时各节点的compose配置文件及证书验证目录都已经准备完成,可以开始尝试启动多机Fabric集群. 首先启动or ...
- 初试 Vue.js
1.为什么我会想要来弄弄vue这个前端框架呢? 答:前段时间被小程序刷屏了,然后就去弄了一下小程序,嗯挺简单的:头脑一发热后就想到vue2也发布一段时间了,何不也来尝尝vue2.0的味道,最后发现它们 ...
- python实例编写(1)--浏览器操作,元素操作
一.浏览器操作 1. back()与 forward() #coding=gbk //编码不一定是utf-8 from selenium import webdriver //导入包,也叫”模组“ ...
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...
- Sql Server——数据的增删改
所谓数据的增删改就是在创建好数据库和表后向表中添加数据.删除表中的数据.更改表中的一些数据. 新增数据: 语法一: insert into 表名 values (数据内容) --这里需要 ...
- C++代码使用 CppUnit 进行单元检测
CppUnit是一个很方便的对C++代码进行单元检测的工具. 如何编译CppUnit参照博客:http://blog.csdn.net/x_iya/article/details/8433716 该博 ...
- ios小型服务器环境配置
之前买的一台二手iphone4退役了,上闲鱼上一看,就值200,而且耳机声音也有点轻,估计买不了什么钱 于是网上看看能不能有什么废物利用的法子,看到说做行车记录仪的,有说做git服务器的,感觉挺有兴趣 ...
- spring jar包
org.springframework.aop- 3.0.0.RELEASE--------------------Spring的面向切面编程,提供AOP(面向切面编程)实现 org.springfr ...
- linux debian 9 配置postgresSQL数据库
#读者注意:本文可以选择不看解释,直接执行每段的0中的代码 (〇):一些概念(可以跳过直接使用(一)0的代码) 1. 客户端:psql.postgreSQL的命令行客户端程序,在终端输入psql进入p ...
- 入坑IT十年(二)技术以外
上一篇博客里提到:技术越来越简单,发布后不久,就看到<技术并不是越来越简单>,这显然是打擂台来了. 技术究竟是不是越来越简单?其实这个问题,要看你究竟是以什么角度来思考这个问题.我们可以举 ...