• 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/

  • 相关阅读:
    线性表单链表的实现
    线性表顺序存储结构
    【C语言】产生随机数
    TCP/IP协议
    【bfs】奇怪的电梯(P1135)
    【DFS】取数游戏(P1123)
    【DFS】圣诞夜的极光(P1454)
    【贪心】骑士的工作(P2695)
    【贪心】纪念品分组(P1094)
    生活的那么一点反思
  • 原文地址:https://www.cnblogs.com/xiaotengyi/p/3568153.html
Copyright © 2020-2023  润新知