当前应用如下 :
a 机器(mysql有很多的库,其中哦一个库oddsdb
目前java应用要求只能库oddsdb被 本地和b机器访问, 但a机器的其他库还是能被其他机器正常访问)
如何做才能限制oddssdb访问,其它库还是需要能够连接的。(什么命令)
a 机器(mysql有很多的库,其中哦一个库oddsdb
目前java应用要求只能库oddsdb被 本地和b机器访问, 但a机器的其他库还是能被其他机器正常访问)
如何做才能限制oddssdb访问,其它库还是需要能够连接的。(什么命令)
grant all on oddsdb.* to username@b;
现在的意思是 这个服务器a的 mysql的除了库oddsdb的所有数据库能被用户bet访问,但服务器a的库oddsdb只能被一台机器10.0.0.1访问。 现在是对一个用户进行权限限制。 需要组合myql下 的user db host里面设置deny
mysql库下
在 db 表 的db 字段有1个值test\_% 表示 以test开头的库推测能否表示除了一个库之外的所有库? (在这个表里)
或者 grant 命令能偶做到如果”里面能否表示除了一个库之外的所有库 “ 这个表示方法找到
那就方便了 可以用2条记录 或者2个grant命令完成上面的任务
revoke ALL PRIVILEGES ON *.* FROM to bet@'%';
insert db values ('%','%','bet','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
insert db values ('%','oddsdb','bet','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
insert db values ('10.0.0.1','oddsdb','bet','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
FLUSH PRIVILEGES;
是否为grant?? 一开始就revoke
Query OK, 0 rows affected (0.00 sec)mysql> revoke ALL PRIVILEGES ON *.* FROM to b@'%';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'to b@'%'' at line 1
mysql> Aborted
[root@bruce ~]#
mysql> revoke ALL PRIVILEGES ON *.* FROM bet@'%';
ERROR 1141 (42000): There is no such grant defined for user 'bet' on host '%'
mysql> 2 换其他帐号执行还是不可以。
所以我只能手工在db
插入 ('%','%','bet','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
('%','oddsdb','bet','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
('10.0.0.1','oddsdb','bet',Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'N'); ----这里数据有修改,你看对不对 ?在局网机器另外2台机器测试, 最终方法发现还是失败
后来我新建立用户b
grant all on *.* to b@'%' identified by 'b' with grant option;
用上面的方法还是不行 测试很多此 mysql重启很多ci 每次修改就重启
insert db values ('%','%','b','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
insert db values ('%','oddsdb','b','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
insert db values ('10.0.0.1','oddsdb','b','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
FLUSH PRIVILEGES;不需要重启。FLUSH PRIVILEGES; 的作用就是不重启的情况直接加载权限表。不过你的 b 用户得先退出再登录。
mysql> insert db values ('%','%','b','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
ERROR 1136 (21S01): Column count doesn't match value count at row 1错误
请 看这行
insert db values ('10.0.0.1','oddsdb','b','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N');
是否该修改
10.0.0.1','oddsdb','b',Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'N');
在10.0.0.1这个ip地址 b用户要求访问那个数据库 , 其他的ip是不可以的
这个命令干 什么 ,是否一定要用 ? 是否执行完命令后要重启mysql。
最后一个问题
我想走另外的方法 探讨是否能行
我不执行 revoke ALL PRIVILEGES ON *.* FROM b@'%';
而执行在db里插入数据是否可以? 如果不可以,清略为说点原因?