MySQL Study之--MySQL關閉自動commit(autocommit)

來源:互聯網
上載者:User

標籤:mysql

MySQL Study之--MySQL關閉自動commit(autocommit)


     對於mysql來講,在交易處理時,預設是在動提交的(autocommit),以下方法可以自動關閉autocommit;

案例分析:

1、在mysql登入環境下修改

[[email protected] soft]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.25-73.1 Percona Server (GPL), Release 73.1, Revision 07b797f
Copyright (c) 2009-2015 Percona LLC and/or its affiliates
Copyright (c) 2000, 2015, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.02 sec)

mysql> select version();
+-------------+
| version()   |
+-------------+
| 5.6.25-73.1 |
+-------------+
1 row in set (0.00 sec)

mysql> show variables like ‘%autocommit%‘;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |                ;;預設autocommit是開啟的
+---------------+-------+
1 row in set (0.03 sec)

在當前session關閉autocommit:
mysql> set @@session.autocommit=0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like ‘%autocommit%‘;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

在global層級關閉autocommit:
mysql> set @@global.autocommit=0;

Query OK, 0 rows affected (0.01 sec)

建立普通使用者:
mysql> create user tom identified by ‘tom‘;

Query OK, 0 rows affected (0.00 sec)

mysql> grant all on prod.* to ‘tom‘@‘localhost‘ identified by ‘tom‘;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

普通使用者登入:
[[email protected] ~]# mysql -u tom -p

Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.6.25-73.1 Percona Server (GPL), Release 73.1, Revision 07b797f
Copyright (c) 2009-2015 Percona LLC and/or its affiliates
Copyright (c) 2000, 2015, 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 mysql;
ERROR 1044 (42000): Access denied for user ‘tom‘@‘localhost‘ to database ‘mysql‘
mysql> use  prod;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> show variables like ‘%commit%‘;
+-------------------------------------------+-------+
| Variable_name                             | Value |
+-------------------------------------------+-------+
| autocommit                                | OFF   |
| binlog_order_commits                      | ON    |
| innodb_api_bk_commit_interval             | 5     |
| innodb_commit_concurrency                 | 0     |
| innodb_flush_log_at_trx_commit            | 1     |
| innodb_use_global_flush_log_at_trx_commit | ON    |
+-------------------------------------------+-------+
6 rows in set (0.00 sec)

建立測試表:
mysql> create table t1(id int,name varchar(10));

Query OK, 0 rows affected (0.15 sec)

mysql> insert into t1 values (10,‘tom‘);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;
+------+------+
| id   | name |
+------+------+
|   10 | tom
 |
+------+------+
1 row in set (0.00 sec)

交易回復:
mysql> rollback;

Query OK, 0 rows affected (0.02 sec)

mysql> select * from t1;
Empty set (0.00 sec)

2、在mysql service重啟後
mysql server 重啟後:
[[email protected] ~]# service mysql stop
Shutting down MySQL (Percona Server)....[  OK  ]
[[email protected] ~]# service mysql start
Starting MySQL (Percona Server).....[  OK  ]
[[email protected] ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.25-73.1 Percona Server (GPL), Release 73.1, Revision 07b797f
Copyright (c) 2009-2015 Percona LLC and/or its affiliates
Copyright (c) 2000, 2015, 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> show variables like ‘%commit%‘;
+-------------------------------------------+-------+
| Variable_name                             | Value |
+-------------------------------------------+-------+
| autocommit                                | ON    |             ;;autocommit仍然是開啟狀態
+-------------------------------------------+-------+
6 rows in set (0.01 sec)

編輯/etc/my.cnf檔案:

[[email protected] ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
init_connect=‘set autocommit=0‘                                    ;;使用者登入時,關閉autocommit
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
explicit_defaults_for_timestamp=true
innodb_buffer_pool_size = 128M
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M

使用者登入查看:
[[email protected] ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.25-73.1 Percona Server (GPL), Release 73.1, Revision 07b797f
Copyright (c) 2009-2015 Percona LLC and/or its affiliates
Copyright (c) 2000, 2015, 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> show variables like ‘%commit%‘;
+-------------------------------------------+-------+
| Variable_name                             | Value |
+-------------------------------------------+-------+
| autocommit                                | ON    |                ;;root使用者不受影響(為安全起見)

mysql> system mysql -u tom -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.25-73.1 Percona Server (GPL), Release 73.1, Revision 07b797f
Copyright (c) 2009-2015 Percona LLC and/or its affiliates
Copyright (c) 2000, 2015, 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> show variables like ‘%commit%‘;
+-------------------------------------------+-------+
| Variable_name                             | Value |
+-------------------------------------------+-------+
| autocommit                                | OFF   |                ;;普通使用者,autocommit已被關閉
+-------------------------------------------+-------+

本文出自 “天涯客的blog” 部落格,請務必保留此出處http://tiany.blog.51cto.com/513694/1683722

MySQL Study之--MySQL關閉自動commit(autocommit)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.