装了kali2020.2版,需要重新设置下mysql,以便于远程连接,同时要打开日志,方便于调试,配置了一下午,教程很多,但有些篇幅太长,实际当中是不需要那么多背景知识的,所以写了个最简洁实用的配置教程,需要的用到的地方详细说明,都是爬坑过来的,不需要的一概不提,让大家思路清晰,配置起来容易点。
MariaDB数据库管理系统是MySQL的一个分支
开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。所有使用MySQL的连接器、程序库和应用程序也将可以在MariaDB下工作。说白了,MariaDB就是MySQL的替代品,和MySQL几乎一模一样。

一、开启MYSQL远程访问

启动mysql服务

sudo service mysql start

配置root密码

sudo mysqladmin -u root password ‘root’

进入mysql

mysql -u root -p root

查看端口

show global variables like ‘port’;

允许root远程连接

GRANT ALL PRIVILEGES ON . TO root@’%’ IDENTIFIED BY ‘root’;

必须输入密码才能进入数据库,(默认的是root用户不需要密码就能进入数据库很不习惯)

GRANT ALL PRIVILEGES ON . TO ‘root’@‘localhost’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;

退出数据库,查看mysql监听,如果显示绑定在127.0.0.1则需要区去修改配置文件

netstat -ntlp | grep “mysql”

切换到root用户,修改配置文件,注释掉bind-address选项,保存文件

vim /etc/mysql/mariadb.conf.d/50-server.cnf

java mariadb连接yml mariadb连接数据库_java mariadb连接yml


重启mysql服务

sudo service mysql restart

查看监听端口信息,如果变成下图那么就能远程连接了

java mariadb连接yml mariadb连接数据库_MySQL_02


远程连接截图

java mariadb连接yml mariadb连接数据库_java mariadb连接yml_03

二、日志配置

MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。

1)通用查询日志:记录建立的客户端连接和执行的语句。

2)慢查询日志:它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。

画红线的表示当前使用了哪个数据库,因此在查询时,要分清查询的范围,必要时需要使用show global variables like ‘log_error’;这样的语句进行全局搜索;

java mariadb连接yml mariadb连接数据库_mysql_04


1、通用查询日志设置

在学习通用日志查询时,需要知道两个数据库中的常用命令:

1)show variables like ‘%version%’;

上述命令,显示当前数据库中与版本号相关的东西。

2) show variables like ‘%general%’;

可以查看,当前的通用日志查询是否开启,如果general_log的值为ON则为开启,为OFF则为关闭(默认情况下是关闭的)。

3) show variables like ‘%log_output%’;

查看当前查询日志输出的格式,可以是FILE(存储在数数据库的数据文件中的hostname.log),也可以是TABLE(存储在数据库中的mysql.general_log)

2、慢查询日志的设置

查询服务是否开启慢查询日志功能:

show variables like ‘slow_query%’;

show variables like ‘long_query_%’;

3、二进制日志

查看是否启用了二进制日志

mysql>show variables like ‘log_bin’;

查看所有二进制日志文件的列表

mysql> show binary logs;

查看当前二进制日志文件状态

mysql> show master status;

上述所有的配置方法其实在图中的文件里都有了,直接把前面的#去掉就可以启用该功能了,不用自己在那配置半天了;

java mariadb连接yml mariadb连接数据库_MySQL_05

三、通过二进制日志恢复数据库

看二进制日志文件用MySQLbinlog

shell>mysqlbinlog mail-bin.000001

或者shell>mysqlbinlog mail-bin.000001 | tail

因为mail-bin.000001是二进制的日志,所以想看日志就需要用mysqlbinlog命令,将二进制文件转换为日志文件,

进入存放日志文件目录,使用

mysqlbinlog localhost-bin.000202 > new_file_name.log

命令,将目标文件保存为日志文件,可指定保存路径;

java mariadb连接yml mariadb连接数据库_MySQL_06


原因是mysqlbinlog这个工具无法识别binlog中的配置中的default-character-set=utf8这个指令。

两个方法可以解决这个问题

一是在MySQL的配置/etc/my.cnf中将default-character-set=utf8 修改为 character-set-server = utf8,但是这需要重启MySQL服务,如果你的MySQL服务正在忙,那这样的代价会比较大。

二是用mysqlbinlog --no-defaults mysql-bin.000004 命令打开;

恢复数据
(1)完整恢复
先执行上次完整备份恢复,再执行自上次备份后产生的二进制日志文件恢复
这样数据库就可以完全的恢复到崩溃前的完全状态

mysqlbinlog mysql-bin.000001 | mysql -uroot -p
!!完全恢复,一般用在执行完全备恢复后,对于全备之后的操作,也要进行恢复,这样才能保证不丢失数据。

(2)基于时间点的恢复
如果确认误操作时间点为2015-06-04 10:00:00执行如下

mysqlbinlog --stop-date=‘2015-06-04 9:59:59’ mysql-bin.000001 | mysql -uroot -p
然后跳过误操作的时间点,继续执行后面的binlog

mysqlbinlog --start-date=‘2015-06-04 10:01:00’ mysql-bin.000001 | mysql -uroot -p
还有一种情况是,恢复指定时间区间的数据

mysqlbinlog --start-datetime=“2015-07-02 11:25:56” --stop-datetime=“2015-07-02 14:20:10” mysql-bin.000001 | mysql -u root -p

(3)基于位置点的恢复
基于时间区间的恢复其实并不常用,以为 即使你误操作的时间,这个时间点还可能涉及到的不只是误操作,也有可能有正确的操作也被跳过去了。那么执行位置恢复
基于位置恢复,通过查看日志文件信息,确认6259-6362为误操作点

mysqlbinlog --stop-position=6259 mysql-bin.000001 | mysql -uroot -p #从1开始至6259的事件读,不包括6259事件
mysqlbinlog --start-position=6363 mysql-bin.000001 | mysql -uroot -p #从6259的事件开始读
恢复指定位置区间恢复数据

mysqlbinlog --start-position=5786 --stop-position=6254 mysql-bin.000001 | mysql -uroot -p