转载:https://www.linuxidc.com/Linux/2014-07/104831.htm
   oracle里面可以根据触发器来记录用户的登录次数,登陆IP,登陆时间等信心。在mysql里面有没有这样的方法呢? 同样的登入信息审计功能在mysql里面也是有的。
1.准备工作:    数据库:mysql8.0.11
                         操作系统: window
2.创建日志信息记录数据库和表: 
  create database accesslog;
  CREATE TABLE accesslog.accesslog (`id` int(11) primary key auto_increment, `time` timestamp, `localname` varchar(30), `matchname` varchar(30))
3.在mysql的配置文件下增加init-connect参数
  a.mysql8的配置文件my.ini不在安装目录下,而在*:\ProgramData\MySQL\MySQL Server 8.0下,是一个隐藏文件,需要在隐藏文件设置中打开才能找到。
  b.在my.ini的[mysqld]下设置参数:
    skip-external-locking
    init-connect='insert into accesslog.accesslog(time, localname, matchname) values(now(),user(),current_user());'
    server-id=1
4.重启mysql服务
  net stop mysql
  net start mysql
5.创建具有对数据库accesslog有插入权限的普通用户
     create USER user1@'%' IDENTIFIED by 'user1';
      create USER user2@'%' IDENTIFIED by 'user2';
      grant select on accesslog.*  to  user1@'%';
      grant select,insert  on accesslog.*  to  user2@'%';
      flush PRIVILEGES;
6.用创建用户登录mysql
       a.mysql -uuser1 -puser1登陆成功,执行 select * from accesslog.accesslog 报错 
   ERROR 2013 (HY000): Lost connection to MySQL server during query
   bmysql -uuser2 -puser2登陆成功,执行 select * from accesslog.accesslog 成功

7.查看数据库accesslog的日志记录信息表
   select * from accesslog.accesslog,发现没有记录,查看err文件后报错:
   [Warning] [MY-013130] [Server] Aborted connection 11 to db: 'unconnected' user: 'user2' host: 'localhost' (init_connect command failed; diagnostics area: MY-001064 - You have an error in your SQL syntax; check the manual that corr)

   解决方法:init-connect 参数里面的语法错误,修改正确语法后解决。

  
09-29 12:04