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