init_connect基本用法
服务器为每个连接的客户端执行的字符串。字符串由一个或多个SQL语句组成。要想指定多个语句,用分号间隔开。例如,每个客户端开始时默认启用autocommit模式。没有全局服务器变量可以规定autocommit默认情况下应禁用,但可以用init_connect来获得相同的效果:
SET GLOBAL init_connect='SET AUTOCOMMIT=0';
还可以在命令行或选项文件中设置该变量。要想使用选项文件设置变量,应包括下述行:
[mysqld]
init_connect='SET AUTOCOMMIT=0'
请注意init_connect的内容并不为拥有SUPER权限的用户执行;实际是内容设置错误(包含错误查询,例如语法错误),这样使所有连接失败。不为SUPER用户执行,使SUPER用户可以打开连接并固定init_connect。
mysql 默认是autocommit=1 的,
我们线上都设置一般是init_connect='set autocommit=0; set names gbk;' 这样的。
init_connect 是可以动态在线调整的,这样就有了一些其他的用处。
经过测试init_connect 是用户登录到数据库上之后,在执行第一次查询之前执行 里面的内容的。
如果init_connect 的内容有语法错误,导致执行失败,会导致用户无法执行查询,从mysql 退出。
init_connect 对具有super 权限的用户是无效的。
我们可以用init_connect 来登记用户的信息,例如一个测试如下:
创建测试表:
mysql.sock@test> create table t1 ( cur_user varchar(100), n_user varchar(100),in_time timestamp default current_timestamp()) ;
Query OK, 0 rows affected (0.09 sec)
设定 init_connect :
mysql.sock@(none)> set global init_connect='insert into test.t1 (cur_user,n_user) values (current_user(),user())';
Query OK, 0 rows affected (0.00 sec)
普通用户登录:
[root@test740_9 ~]# mysql -u lsl -plsl test
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1101066
Server version: 5.1.41-log MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
查询用户信息:
mysql.sock@test> select * from t1;
+----------+---------------+---------------------+
| cur_user | n_user | in_time |
+----------+---------------+---------------------+
| lsl@% | lsl@localhost | 2011-03-29 10:50:58 |
+----------+---------------+---------------------+
1 row in set (0.00 sec)
记录了用户的客户端信息,当然还可以记录更多的信息,例如database() 记录当前数据库等等。
本次测试是直接将记录日志表,建在测试用户下,
注意: 对于所有的普通级别的用户,必须全部都要对日志表具有读写权限, 否则将导致,没有权限的用户无法使用数据库。
参考:
http://www.cnblogs.com/cnsanshao/p/3253025.html
http://blog.itpub.net/133735/viewspace-691196/
init_connect基本用法的更多相关文章
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- python enumerate 用法
A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...
- [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
- 【JavaScript】innerHTML、innerText和outerHTML的用法区别
用法: <div id="test"> <span style="color:red">test1</span> tes ...
- chattr用法
[root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...
- 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)
vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...
随机推荐
- backtrace函数
1.函数原型 #include <execinfo.h> int backtrace(void **buffer, int size); 该函数获取当前线程的调用堆栈,获取的信息将会被存放 ...
- Vue 去脚手架插件,自动加载vue文件
接上回 一些本质 本质上,去脚手架也好,读取vue文件也好,无非是维护options,每个Vue对象的初始化配置对象不触及Vue内部而言,在外部想怎么改都是可以的,只要保证options的正确,一切都 ...
- PHP批量替换MySql数据库中的数据内容
<?php //替换数据库内容类 class replace{ public $dbAddress; //数据库地址 public $dbUser; //数据库用户名 public $dbPwd ...
- 「暑期训练」「基础DP」FATE(HDU-2159)
题意与分析 学习本题的时候遇到了一定的困难.看了题解才知道这是二重背包.本题的实质是二重完全背包.二维费用的背包问题是指:对于每件物品,具有两种不同的费用,选择这件物品必须同时付出这两种代价:对于每种 ...
- 修改npm全局安装模式的路径
由于npm全局模块的存放路径及cache的路径默认是放在C盘下,这样肯定会增加C盘的负担,那么如果需要修改其存放路径应该怎么做呢? 第一步:在nodejs安装目录(也可以指定其它目录)下创建”node ...
- 06-Mysql数据库----表的操作
06-表的操作 本节掌握 存储引擎介绍(了解) 表的增删改查 一.存储引擎(了解) 前几节我们知道mysql中建立的库===>文件夹,库中的表====>文件 现实生活中我们用来存储数据 ...
- CSP201409-1:相邻数对
引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试, ...
- resetroot_169route_python3(用于ubuntu16.04)
#!/usr/bin/python3 import os import sys import json import urllib.request import urllib.parse import ...
- C++类数组批量赋值
类和结构体不同,结构体在初始化时可以使用{...}的方法全部赋值,但是结构体怎么办呢?一种是把数据数组写到一个相同的结构体内,然后for循环使用一个非构造函数写入到类数组中.另一种方法是直接写入到对应 ...
- 主外键多表查询demo
https://www.cnblogs.com/DragonFire/p/6949767.html mySQL练习-主外键多表查询 MySQL练习-主外键多表查询 练习: 1.建立表关系: 请创建如下 ...