具有选择权限的MySQL用户仍可以更新

时间:2015-01-16 18:33:24

标签: mysql sql ssh permissions odbc

我有一个带有MySQL数据库的OpenShift应用程序,我为其配置了一个ODBC连接,这样用户就可以使用Access作为表的只读前端。我创建了这样一个用户,但他们能够从Access前端更新数据,并将其反映在数据库中。这就是我的所作所为:

我创建了一个名为' reports'的用户,只能对一个架构进行只读访问,'评论'。

GRANT SELECT ON reviews.* TO reports@'%' IDENTIFIED BY `password`;

当我跑步时

SELECT * FROM mysql.user WHERE user = 'reports';

我得到了所有的N和0。我明白没有' Y' for" Select_priv"因为它不是全局选择私有,只在一个模式上,所以我认为没关系。

当我跑步时

SHOW GRANTS FOR 'reports'@'%';

我得到了

  

上授予使用权。报告' @'%'通过密码识别' stringstringstring'
  GRANT SELECT ON'评论'。*报告' @'%';

我的预期。

SELECT * FROM db where User = 'reports';
  

|主机| Db |用户| Select_priv | Insert_priv | Update_priv | ...
  |%|评论|报告| Y | N | N | ...

但是当我进入Access,编辑一些数据,然后ssh到数据库并查看数据库时,UPDATES正在运行。

我在使用Access连接之前使用rhc port-forward -a applicationname,并使用rhc ssh applicationname从服务器查看MySQL。

1 个答案:

答案 0 :(得分:1)

Access中存在一个错误,如果您将数据源提供给它,然后尝试更改它,即使它已经出现,它也不会真正释放您的初始数据源。我最初使用All Privileges帐户设置了Access数据库,然后将数据源更改为只读帐户,但它继续在后台使用我的All Access帐户。使用odbcad32.exe删除数据源证明了这一点,因为我刚收到连接错误,即使它说我通过我的有效只读帐户连接。我从头开始使用只读数据源创建了一个新的Access数据库,它按预期工作。