在MySQL生产环境中,为了实现对用户登录时间和IP地址的审计,而又尽可能减少对性能和存储空间的影响,一种有效的方法是通过策略调整和配置优化来实现。首先,我们需要理解MySQL的默认用户权限管理,如使用`SHOW GRANTS`命令查看用户app的权限,如: ```sql SHOW GRANTS FOR app@192.168.88.*; ``` 这会显示app用户在指定IP范围(192.168.88.*)上的所有权限。如果需要限制或赋予特定权限,例如授予所有数据库权限,可以使用以下语句: ```sql REVOKE ALL PRIVILEGES ON *.* FROM 'app'@'192.168.88.191'; ``` 这里需要注意的是,root用户通常不需要被授予超级用户(super)权限,除非确实需要执行特殊的系统管理任务,且应确保root用户的权限不会意外地扩展到其他不必要的操作。 接下来,我们关注如何创建一个名为`accesslog`的数据库和表来记录审计信息。首先,创建数据库和表结构: ```sql CREATE DATABASE accesslog; CREATE TABLE accesslog.accesslog ( id INT(11) PRIMARY KEY AUTO_INCREMENT, time TIMESTAMP, local_name VARCHAR(30), match_name VARCHAR(30) ); ``` 这个表用于存储登录事件,包括连接ID、登录时间、本地名称(可能代表客户端IP)和匹配名称(可能是用户名)。 为了避免每次用户登录时都进行数据库操作,可以设置`my.cnf`文件中的`init-connect`参数,使其在连接时自动插入一条记录。例如: ```ini [mysqld] init-connect='INSERT INTO accesslog.accesslog VALUES (connection_id(), NOW(), user(), current_user())' ``` 这样,当使用`mysql -u app -h 192.168.88.100`连接时,app用户登录到192.168.88.100这个IP地址,登录事件将自动添加到`accesslog`表中。 最后,为了确保只有app用户能写入accesslog表,需要授予该用户适当的写入权限: ```sql GRANT INSERT ON accesslog.* TO 'app'@'192.168.88.191'; FLUSH PRIVILEGES; ``` 这一步确保了只有app用户在指定IP上能执行`INSERT`操作于accesslog表中,从而实现了高效且安全的用户登录审计。 通过这种方式,我们可以在MySQL生产环境中监控用户登录信息,同时保持数据库性能和存储空间的有效管理。这种方式不仅提高了审计效率,还降低了对数据库资源的额外压力。
show grants for app@192.168.88.*; //查看用户权限
一、增加业务用户app和限制连接IP
grant all on *.* to 'app'@'192.168.88.*' identified by 'XXXXX'; //添加app用户
revoke super on *.* from 'app'@'192.168.88.191'; //非root用户需要移除super权限,本次只记录非root用户的登陆记录,因为root只配置服务器本机可以登陆
二、添加非root用户登陆审计,所有非root用户必须加对accesslog库有插入权限
create database accesslog; //创库
CREATE TABLE accesslog.accesslog (`id` int(11) primary key auto_increment, `time` timestamp, `localname` varchar(30), `matchname` varchar(30)); //创表
查看除root用户外的用户,都要添加insert权限
grant insert on accesslog.* to 'app'@'192.168.88.191'; //添加insert权限
flush privileges; //刷新配置
三、修改my.cnf 添加下面语句到行尾
init-connect='insert into accesslog.accesslog values(connection_id(),now(),user(),current_user());'
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展