我在 Ubuntu 10.04 上有一个 MySQL 数据库。每次我使用它时,我都担心会意外删除一个表或整个数据库。
有没有办法配置 MySQL 在继续执行相关命令之前给出“警告”?
答案1
在运行命令之前启动事务,并在满意时提交它。
这需要 A. InnoDB 表,和 B. 禁用隐式事务。
答案2
与我共事的一位开发人员养成了一个习惯,他总是WHERE
先编写子句,然后再回过头来编写查询的UPDATE
或部分。DELETE
在将部分更改为SELECT
之前,始终编写查询并验证它是否与您想要的行匹配也是一个好习惯。SELECT
UPDATE
或者,您可以使用这--i-am-a-dummy
设定在您的 MySQL 客户端上。这将阻止您(和其他人)UPDATE
在DELETE
没有WHERE
。 它还具有一些其他效果,可以防止长时间运行的查询和大型结果集。
如果您正在运行查询,这些都无济于事DROP
。为此,您最好创建一个单独的用户并确保您的普通用户没有权限DROP
。您很可能会收到权限被拒绝的错误,并且必须注销然后以更高权限的用户身份重新登录,然后才能再次尝试查询,从而让您有足够的时间重新考虑查询。
答案3
对你提出的问题,简短的回答是否定的。正如其他人已经描述的,有一些方法可以在一定程度上减轻风险(我喜欢使用事务,但它们并不总是一种选择),但有一个基本假设,即只有那些知道自己在做什么的人才会使用命令行。
您不会因为“drop”命令对其他类型的查询无效而意外删除表或数据库。如果您在想要其他内容时输入了“drop”,那么您真的不能指望软件能保护您。这是人为问题,而不是技术问题,您只需学会更加小心即可。