探讨mysql的权限问题

liyuzhao8年前学习记录1368

不管是本地连接数据库还是远程连接数据库,要想连接成功必须要有四样:

1:host   –>连接地址

2:user  –>连接账号

3:password  –>连接账号的密码

4:port  –>连接的端口(这个一般不用填写,因为你如果用mysql,默认就是3306,除非你用第三方工具连接才会需要填上去)

注意:以下对数据库的增加权限,删除权限,增加用户,都只能用mysql原来的那个用户,就是root最高权限的用户

下面我们来探讨一下,如何新增加一个用户,并且能连接上数据库,并能使用相应的权限。

添加用户的语句:

grant all on *.* to test@’192.168.1.%’ identified by ‘aaaaaa’;

分析以上的代码:

all —>所有的权限,也就是create,select,update等等的权限,可以到mysql的文档查查grant看看

*.*  —>左边的星号代表为获取所有的数据库的权限,右边星号代表,所有的表权限,如果是test.*,就是获取test数据库的权限和获取test数据库下的所有表的权限

test  —>用户账号

@’192.168.1.%’ —>@这个符号是必须要的,192.168.1.%的意思是在192.168.1.1到192.168.1.254的ip区段都可以进行数据库连接。

identified by ‘aaaaaa’  —>这个的意思是为用户添加一个密码,密码为aaaaaa

完成上面的用户添加后测试一下是否能连接上数据库:(我本地的ip为192.168.1.74,可以在cmd下使用ipconfig进行本地ip查询)

已经能连接上数据库。但是此时的用户权限过大,除了grant这个权限没有外,所有的权限都具备,所以我们要收回它的权限,然后重新分配权限。

如图

收回权限:

revoke all on *.* from test@’192.168.1.%’;

flush privileges

代码和上面的那个解析差不多,就是revoke关键字不一样,这个是移除的意思,flush privileges是刷新缓冲,这个是必须要的。

此时只剩下一个,所有的数据库都不见了,是因为此用户所有的数据库和表的权限都没有。

增加用户的权限:

grant insert,update,select on discuz.* to test@’192.168.1.%’;

flush privileges;

很明显此discuz数据库已经显示出来,此时test用户已经有discuz数据库所有权限,现在已经能对此数据库进行insert,update,select的操作了。

以上是学习mysql数据库的一些权限的心得,如果有错欢迎指出来。此为钊叔原创,如要转载请说明出处,谢谢。



相关文章

用mysql创建触发器

学习创建触发器:触发器的定义就是,当执行增删改查等操作就会触发执行sql语句。 先创建两个表:dongwu表和购买buy表,数据字典如下:动物表:Create table dongwu(Dw...

探索sql合并插入+事务性能问题

探索sql合并插入+事务性能问题准备:1:为了方便默认用thinkphp5框架来测试,直接下载官方的thinkphp5框架,部署到本地的环境,开启debug调试来追踪sql语句。2:新建一个表为tes...

session和cookie原理透彻分析

一直以来对session和cookie这个两个的原来有点不明确。上次去公司面试的时候就有这个面试题,心里一直都想搞清楚这两个的原理,但是一直没有好的理解,所幸今晚翻了以前看十八哥的视频,非常透彻的讲解...

数据库的for each row定义

在mysql中,for each row 是定义行级触发器的语句,如果不写是错误的,因为mysql还没有支持语句触发器。在oracle中,如果不写默认为语句触发器,就是不管执行多少次,都只触发一次语句...

centos7.4 安装lnmp

centos7.4 安装lnmp

最近购买了两天云服务器,所以环境需要重新配置下。采用php7.2+nginx+mysql5.7 .安装步骤:yum的安装?1yum updateyum安装nginx安装nginx最新源?12yum l...

探讨mysql的游标cursor

探讨mysql的游标cursor

以下是我的做法步骤代码://新建动物表create table dw(dw_id int,dw_name varchar(20),dw_num varchar(10));//插入几条数据insert...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。