探讨mysql的权限问题
不管是本地连接数据库还是远程连接数据库,要想连接成功必须要有四样:
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数据库的一些权限的心得,如果有错欢迎指出来。此为钊叔原创,如要转载请说明出处,谢谢。