【发布时间】:2015-03-15 10:41:36
【问题描述】:
我有一个带有 MySQL 数据库的 OpenShift 应用程序,我为其配置了 ODBC 连接,这样用户就可以将 Access 用作表的只读前端。我创建了这样一个用户,但他们能够从 Access 前端更新数据并反映在数据库中。这是我所做的:
我创建了一个名为“reports”的用户,被授予对一个模式“reviews”的只读访问权限。
GRANT SELECT ON reviews.* TO reports@'%' IDENTIFIED BY `password`;
当我跑步时
SELECT * FROM mysql.user WHERE user = 'reports';
我得到了所有的 N 和 0。我知道“Select_priv”没有“Y”,因为它不是全局选择 priv,仅在一个架构上,所以我认为没关系。
当我跑步时
SHOW GRANTS FOR 'reports'@'%';
我明白了
在 上授予使用权限。 TO 'reports'@'%' IDENTIFIED BY PASSWORD 'stringstringstring'
GRANT SELECT ON 'reviews'.* TO 'reports'@'%';
正如我所料。
SELECT * FROM db where User = 'reports';
|Host|Db |User |Select_priv|Insert_priv|Update_priv|...
|% |评论|报告|Y |N |N |...
但是当我进入 Access,编辑一些数据,然后 ssh 进入数据库并查看数据库时,UPDATES 正在工作。
我在 Access 中连接之前使用rhc port-forward -a applicationname,并使用rhc ssh applicationname 从服务器查看 MySQL。
【问题讨论】:
-
您可能希望查看 mysqld 上还有哪些其他用户名可用。您可能还希望确保您的 ODBC dsn 指的是正确的用户名。我从经验中知道,这是非常容易出错的。连接您的 ODBC 用户,然后执行
SHOW FULL PROCESSLIST。 -
我的 DSN 指的是正确的名称,但在我决定切换到只读帐户之前,Access 仍然(成功地)使用我最初设置 Access DB 的所有权限管理员帐户。似乎一旦你给它一个数据源,你就不能在不创建新的 Access DB 的情况下切换它。
标签: mysql sql ssh permissions odbc