生产环境中,DBA的粗心造成的数据错误最危险,为了防止无where条件的update语句出现错误,可使用如下方法。
1、加-U登录数据库
此处可以看到数据库给出了提示,不允许没有where条件的update操作。2、根据这样的特性,对系统环境变量进行更改
vi /etc/profile
alias mysql='mysql -U'
source /etc/profile
3、正常命令登录MySQL,进行测试
1、加-U登录数据库
点击(此处)折叠或打开
- [root@master ~]# mysql -uroot -pmysql -U
- mysql: [Warning] Using a password on the command line interface can be insecure.
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 12
- Server version: 5.7.19-log Source distribution
- Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- mysql>
- mysql> use test;
- Reading table information for completion of table and column names
- You can turn off this feature to get a quicker startup with -A
- Database changed
- mysql> show tables;
- +----------------+
- | Tables_in_test |
- +----------------+
- | t1 |
- +----------------+
- 1 row in set (0.00 sec)
- mysql> show create table t1;
- +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | Table | Create Table |
- +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | t1 | CREATE TABLE `t1` (
- `admin_id` int(11) NOT NULL DEFAULT '0',
- `admin_name` varchar(200) NOT NULL,
- `password` varchar(200) NOT NULL,
- `role` int(11) NOT NULL DEFAULT '1',
- `last_login_time` datetime DEFAULT NULL,
- `last_login_ip` varchar(16) DEFAULT '',
- `admin_status` int(11) NOT NULL DEFAULT '1',
- `create_time` datetime DEFAULT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
- +-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- 1 row in set (0.00 sec)
- mysql> update t1 set admin_status=1234;
- ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
vi /etc/profile
alias mysql='mysql -U'
source /etc/profile
3、正常命令登录MySQL,进行测试
点击(此处)折叠或打开
- [root@master ~]# mysql -uroot -pmysql
- mysql: [Warning] Using a password on the command line interface can be insecure.
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 14
- Server version: 5.7.19-log Source distribution
- Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- mysql> use test;
- Reading table information for completion of table and column names
- You can turn off this feature to get a quicker startup with -A
- Database changed
- mysql> update t1 set admin_status=1234;
- ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column