如何在终端中执行 mysql 命令之前得到提示

如何在终端中执行 mysql 命令之前得到提示

我在 Ubuntu 10.04 上有一个 MySQL 数据库。每次我使用它时,我都担心会意外删除一个表或整个数据库。

有没有办法配置 MySQL 在继续执行相关命令之前给出“警告”?

答案1

在运行命令之前启动事务,并在满意时提交它。

这需要 A. InnoDB 表,和 B. 禁用隐式事务。

答案2

与我共事的一位开发人员养成了一个习惯,他总是WHERE先编写子句,然后再回过头来编写查询的UPDATE或部分。DELETE

在将部分更改为SELECT之前,始终编写查询并验证它是否与您想要的行匹配也是一个好习惯。SELECTUPDATE

或者,您可以使用--i-am-a-dummy设定在您的 MySQL 客户端上。这将阻止您(和其他人)UPDATEDELETE没有WHERE它还具有一些其他效果,可以防止长时间运行的查询和大型结果集

如果您正在运行查询,这些都无济于事DROP。为此,您最好创建一个单独的用户并确保您的普通用户没有权限DROP。您很可能会收到权限被拒绝的错误,并且必须注销然后以更高权限的用户身份重新登录,然后才能再次尝试查询,从而让您有足够的时间重新考虑查询。

答案3

对你提出的问题,简短的回答是否定的。正如其他人已经描述的,有一些方法可以在一定程度上减轻风险(我喜欢使用事务,但它们并不总是一种选择),但有一个基本假设,即只有那些知道自己在做什么的人才会使用命令行。

您不会因为“drop”命令对其他类型的查询无效而意外删除表或数据库。如果您在想要其他内容时输入了“drop”,那么您真的不能指望软件能保护您。这是人为问题,而不是技术问题,您只需学会更加小心即可。

相关内容