存档

文章标签 ‘mysql’

mysql审计功能安装使用

2018年3月21日 没有评论

mysql社区版没有审计功能,企业版有审计功能,但是需要付费。

社区版可以使用mcafee开发的审计功能插件libaudit_plugin.so,这个插件可以用在mysql 5.1以后的版本,使用时请下载对应的版本。

https://bintray.com/mcafee/mysql-audit-plugin/release#files

解压拷贝libaudit_plugin.so到mysql的插件目录:

查看MySQL的插件目录:

复制库文件到MySQL库目录下:

# cp audit-plugin-mysql-5.7-1.1.4-725/lib/libaudit_plugin.so /usr/local/mysql/lib/plugin/
# chmod a+x libaudit_plugin.so

进入mysql命令窗口,安装插件:

> install plugin audit soname 'libaudit_plugin.so';
Query OK, 0 rows affected (0.06 sec)
查看mysql当前已经加载了哪些插件:

查看版本:

开启Audit功能:

> SET GLOBAL audit_json_file=ON;
Query OK, 0 rows affected (0.00 sec)
执行任何语句(默认会记录任何语句,有语法错误的不会记录),然后去mysql数据目录查看mysql-audit.json文件(默认为该文件)。

插入一些数据,查看一下mysql-audit.json文件信息(json格式),如下:

复制代码

可以查看插件有哪些可配置的参数:

mysql> SHOW GLOBAL VARIABLES LIKE '%audi%';

其中我们需要关注的参数有:

1. audit_json_file

是否开启audit功能(0为关闭)。

2. audit_json_log_file

记录文件的路径和名称信息(默认放在mysql数据目录下.json文件)。

3. audit_record_cmds

audit记录的命令,默认为记录所有命令。可以设置为任意dml、dcl、ddl的组合。如:audit_record_cmds=select,insert,delete,update。还可以在线设置set global audit_record_cmds=NULL。(表示记录所有命令)

4. audit_record_objs

audit记录操作的对象,默认为记录所有对象( 审计哪些数据库),可以用SET GLOBAL audit_record_objs=NULL设置为默认。也可以指定为下面的格式:audit_record_objs=,test.*,mysql.*,information_schema.*。

5. audit_whitelist_users

用户白名单。

详细的参数说明,可以直接访问官方说明:

https://github.com/mcafee/mysql-audit/wiki/Configuration

最后为了保证重启数据库,配置不丢失,修改my.cnf 配置文件,将下面的配置添加到[mysqld]中,所以在配置文件中my.cnf加入参数:

audit_json_file=on #保证mysql重启后自动启动插件
plugin-load=AUDIT=libaudit_plugin.so #防止删除了插件,重启后又会加载
audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate' #要记录哪些命令语句,因为默认记录所有操作;
保存重启即可看到效果。

mysql审计插件卸载

直接执行 UNINSTALL PLUGIN AUDIT 卸载会报错:

需要在 my.cnf 中 [mysqld] 下添加 audit_uninstall_plugin=1,重启mysql。重启完毕后执行两次 UNINSTALL PLUGIN AUDIT; 即可卸载。

卸载完成后需要从 my.cnf 中删除 audit_uninstall_plugin=1 ,否则下次mysql启动会报错:[ERROR] /data/mysql/bin/mysqld: unknown variable 'audit_uninstall_plugin=1'

分类: mysql 标签: ,

linux编译安装mysql

2013年6月14日 10 条评论

紧接着上文,这次是重装mysql,正好之前有人要lnmp的安装方法,算上这篇文章就全了。
安装前准备

如果mysql用户不存在,那么添加mysql用户

mysql编译安装

到此mysql就安装到了/usr/local/mysql路径下,下面开始mysql的配置工作
------------------------------------

安装mysql选项文件

mysql设置开机自启动

配置权限表

启动mysql

这一步可能会报错
/etc/init.d/mysqld: line 260: my_print_defaults: command not found
/etc/init.d/mysqld: line 263: my_print_defaults: command not found
/etc/init.d/mysqld: line 270: @HOSTNAME@: command not found
/etc/init.d/mysqld: line 279: @HOSTNAME@: command not found
/etc/init.d/mysqld: line 292: cd: @prefix@: No such file or directory
Starting MySQLCouldn't find MySQL manager (@bindir@/mysqlmanager) or server (@bindir@/mysqld_safe) [FAILED]

因为路径没有设置,请重启确认上面配置工作是否都完成,一般是configure后没有make和make install。

mysql初始化配置:

mysql如何导入旧的数据:
直接拷贝数据库文件夹到数据目录下然后执行

==================================================================
mysql安装过程中问题

1.
make[2]: Entering directory /down/webinstall/mysql-5.1.57/mysql-test
make[3]: Entering directory
/down/webinstall/mysql-5.1.57/mysql-test
make[3]: Nothing to be done for install-exec-am.
make INSTALL_TO_DIR="/usr/local/mysql/mysql-test" install_test_files
make[4]: Entering directory
/down/webinstall/mysql-5.1.57/mysql-test
时间较长
MYSQL安装到这里卡了很久,可能以为出错了,实际上MYSQL已经安装成功了,它这步过段时间就会好了,是mysql在自我编译测试造成的。

2.checking for termcap functions library... configure: error: No curses/termcap library found
yum install ncurses ncurses-devel

3.Starting MySQL.Manager of pid-file quit without updating fi[FAILED]

启动数据库之前,需要先配置权限表,其中/usr/local/mysql为mysql的安装目录
chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/bin/mysql_install_db --user=mysql

分类: mysql 标签: ,

mysql启动不了

2013年4月28日 1 条评论

早上访问www.nginx.cn,页面提示

“建立数据库连接时出错”

机器环境跑的是nginx+php-fpm+mysql、出问题之前也没做过停止mysql进程的操作。

突然间数据库连接出错,

开始以为php的问题,那么我在命令行直接访问mysql

出现错误提示

阅读全文...

分类: mysql 标签: , , ,

mysql Table 'xx' is read only

2013年4月9日 没有评论

更换服务器环境的时候如果数据库是直接拷贝数据库文件夹过来,需要做两件事情。

其中/usr/local/lnmp/mysql/是mysql的安装路径:

重启mysql,数据库就可以使用。

因为数据库的权限是启动时加载的需要重新启动才行。

分类: mysql 标签: , ,

ERROR 2003 (HY000): Can't connect to MySQL server on 'www.neihanji.com' (111)

2012年11月12日 没有评论

从一台服务器去连接另一台服务器的mysql提示如下错误

ERROR 2003 (HY000): Can't connect to MySQL server on 'www.nginx.cn' (111)

注释掉/etc/mysql/my.conf中以下两条

#skip-networking
#bind-address = 127.0.0.1

重启mysql服务
service mysql restart

分类: mysql 标签: ,

mysql插入年月日格式日期

2012年8月21日 没有评论

mysql中插入如下数据

“2012年1月1日”到 date类型字段

 

数据库表结构 huangli(day date);

sql语句格式为

insert into huangli values(STR_TO_DATE('2012年1月1日', '%Y年%m月%d日'))

 

 

分类: mysql 标签: ,

mysql insert忽略1062错误

2012年8月6日 没有评论

批量insert语句主键冲突时,会停止执行,报如下错误,

ERROR 1062 (23000) at line 5412: Duplicate entry '1577987' for key 'PRIMARY'

mysql -uroot -p123456 -f database < filename.sql

-u后跟用户名,无空格

-p后跟密码,无空格

-f后跟数据库名,有空格表示强制执行,忽略错误

分类: mysql 标签:

mysql date类型字段查询和插入格式

2012年6月29日 没有评论

插入

INSERT INTO shengqi(id,content,mm) VALUES ('1','升 7:36<br/>降 16:59','2012-01-1');

查询:

select id,content from  shengqi where DATE_FORMAT(mm,'%Y-%m') =  '2012-01';

select id,content from  shengqi where mm=  '2012-01-01';

分类: mysql 标签: , ,

mysql 字段部分内容替换

2012年6月29日 没有评论

update user set host=REPLACE(host,'main','slave')

对user表中的hoist字段进行替换,字段中main替换成slave

分类: mysql 标签: