防止更改数据库或验证数据库完整性的最佳方法是什么,以便无法从为此数据库创建的应用程序更改它 .
假设您拥有访问数据库的用户名和密码,则允许读写 .
用户具有写入权限
不依赖于特定系统(MySQL,Oracle,SQL Server)
我正在寻找的解决方案不是基于用户对数据库的权限
大多数现代数据库允许您授予读取和写入权限,但不允许使用ALTER TABLE等DDL命令 .
不要给不应该更改DB结构权限的用户执行DDL .
如果通过“Alter”表示更改任何数据行而不是数据库结构,则只能授予用户SELECT权限 .
必须从数据库服务器授予应用程序使用的用户或帐户 . 通常权限包括以下内容:
选择
插入
更新
删除
改变
掉落
只为用户帐户提供所需的权限;换句话说,不要授予 Alter 权限,并且应用程序(或使用相同登录名的任何人)将无法更改表 .
Alter
两种策略:1)如果您运行SQL Server,Oracle,DB2等,则可以配置权限,以便默认情况下用户是读取器/写入器(这意味着没有更改权限) . 2)您可以定期检查是否有人更改了数据结构,甚至设置了数据库触发器来检测更改并记录谁/何时等(取决于您的数据库平台)
3 回答
大多数现代数据库允许您授予读取和写入权限,但不允许使用ALTER TABLE等DDL命令 .
不要给不应该更改DB结构权限的用户执行DDL .
如果通过“Alter”表示更改任何数据行而不是数据库结构,则只能授予用户SELECT权限 .
必须从数据库服务器授予应用程序使用的用户或帐户 . 通常权限包括以下内容:
选择
插入
更新
删除
改变
掉落
只为用户帐户提供所需的权限;换句话说,不要授予
Alter
权限,并且应用程序(或使用相同登录名的任何人)将无法更改表 .两种策略:1)如果您运行SQL Server,Oracle,DB2等,则可以配置权限,以便默认情况下用户是读取器/写入器(这意味着没有更改权限) . 2)您可以定期检查是否有人更改了数据结构,甚至设置了数据库触发器来检测更改并记录谁/何时等(取决于您的数据库平台)