数据库4大语句相信你们也都清楚,所谓的crud,就算不了解也据说过,这也是数据库最基础的东西。 若是要是真是不在意性能安全什么的基本上这四大基本草错也能完成,可是我们在不少时候其实要考虑的更多, 比方说 **事务处理,**这个对于一些应用来讲,好比钱方面的,没这个的话基本上就废了。 再有其中一个就是本文所讲的 数据库权限,由于不能存在整个mysql彻底对外的状况,全部后端随便玩这样出了问题被老板砍死的概率会比较大,每每这个权限方面作的会比较细,mysql对这方面支持的也比较好,好比能够以库为单位,也能够对表为单位,好比指定某一个用户只能在某一个库里的某一个表里进行某一种类型的操做。html
在数据库里通常语句分为两大类 一大类是专门对数据进行操做的,也就是crud这种 一大类是管理方面的,好比说create 一个 table、database这种命令,我们说的权限也是属于这种的mysql
在数据库里操做权限实际上是有两种方法的sql
GRANT 权限 ON 库.表 TO '用户'@'主机' IDENTIFIED BY '密码' [WITH GRANT OPTION];
复制代码
这个权限能够直接写若是 要是想给所有权限的话也能够直接给个ALL、只要你心大~ 也能够单独给好比:SELECT,UPDATE 逗号隔开,具体名称是啥能够看 **'mysql.user' **里的列 ,这里很少赘述数据库
后面的这个IDENTIFIED设计的也是比较有意思的,能够存在同一个主机下的同一个用户可是密码不同的状况后端
这个库.表这个简写你们应该也知道好比我如今操做的是mysql,那**'mysql.user'就能够简写成'user',**同样的,若是要所有权限,那就 '.'安全
** **服务器
** **主机若是也想给全部的话(固然这就离出事而 不远了),理论上能够给个 "%",%在SQL里是通配符,表明全部。 假设如今如今公司ip是 210.34.65.153微信
GRANT ALL ON *.* TO '用户'@'210.34.65.153' IDENTIFIED BY '密码';
复制代码
那么直接这样写也是同样的,权限虽然开放,可是主机是写死的,只要你能防得住公司本身人的状况下。。。markdown
WITH GRANT OPTION: 这个参数是可选的,意思就是说若是不给,那这句话到这就结束了,这个用户就是最终一级,他不能再去建子用户了,若是给了,就表明能够建子帐号,固然子用户能分出去的权限仅限他本身有的权限架构
注意一点,这里的操做只能分配给已有的帐户,建立新帐户须要另外的权限 而且,还得有GRANT权限,否则的话就算有这个权限可是没有执行这个权限的权限
这里稍微多提一句,若是你这个mysqlserver想要对外开放,不必定对客户端,可能对本身的服务器开放,那你除了这个数据库的权限还有一层防火墙,假设防火墙3306没开那也是过不去的,须要两层都过才能够
这里先赋予所有权限; 而后能够用
show grants
命令查看用户权限
REVOKE 权限 ON 库.表 FROM '用户名'@'主机';
复制代码
REVOKE 语法层面跟GRANT差很少,也都是权限和角色若是要多个直接加,日后接就好相似:
注意⚠️
若是要撤销所有权限的话须要用另外一种写法,该语法将删除命名用户或角色的全部全局,数据库,表,列和例程特权 这里的 user_or_role 就是说能够直接写我们上边写的 '用户名'@'主机',多个的话就接着后面来个,接着写就行 置于这个role,数据库权限固然能够有角色,不过用法也都差很少,有兴趣能够直接去mysql官网查看删除角色的详细写法 REVOKE
REVOKE ALL PRIVILEGES, GRANT OPTION
FROM user_or_role [, user_or_role]
复制代码
要使用此REVOKE
语法,您必须具备全局CREATE USER
特权或系统架构的UPDATE
特权mysql
。
例子: 拿上面grants
建立的用户来讲,建出来是ALL权限,查看权限是这样的:
收回SELECT INSERT UPDATE以后查看权限就会是
已经没有SELECT INSERT UPDATE了
这两种方法固然仍是推荐用第一种,由于第二种是属于一种野路子的方法,毕竟100次里有1次出问题了那仍是有点风险。不过有的时候一些特殊的状况下直接操做系统的用户表也是有可能的,因此在这里说一下 mysql 系统表里的user表就是mysql本身来区分用户的。
这里方便查看就直接用navicat了。 这里的权限不少、这个表里全部的Y、N 都是权限、这里简单说几个字段的意思 Host:简单的来讲这个Host就是说我这条权限对哪一个地址好使,好比说 192.168.0.3 下的 root有什么权限,localhost也就是本地好使,外部连接都不认 User:用户名、Host不一样能够重复
这一堆也就是可不能够增删改查 Create:建表建库 Drop:删除表或者删除库 Reload:重启 Shutdown:关闭 等等吧。。。。
有的时候操做完权限会存在不生效的状况,好比把用户删除了还能登进去 能够用
flush privileges;
复制代码
刷新一下;
show grants for 用户名@主机;
复制代码
有什么感兴趣的,或者遇到什么问题能够直接加我好友,我们一块儿沟通
微信:Dyy916829411 qq: 916829411