MariaDB(mysql)的远程连接及日志配置(无废话版)

装了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
MariaDB(mysql)的远程连接及日志配置(无废话版)_第1张图片
重启mysql服务
sudo service mysql restart
查看监听端口信息,如果变成下图那么就能远程连接了
在这里插入图片描述
远程连接截图
MariaDB(mysql)的远程连接及日志配置(无废话版)_第2张图片

二、日志配置

MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。
1)通用查询日志:记录建立的客户端连接和执行的语句。
2)慢查询日志:它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。
画红线的表示当前使用了哪个数据库,因此在查询时,要分清查询的范围,必要时需要使用show global variables like ‘log_error’;这样的语句进行全局搜索;
MariaDB(mysql)的远程连接及日志配置(无废话版)_第3张图片
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;
上述所有的配置方法其实在图中的文件里都有了,直接把前面的#去掉就可以启用该功能了,不用自己在那配置半天了;
MariaDB(mysql)的远程连接及日志配置(无废话版)_第4张图片

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

看二进制日志文件用MySQLbinlog
shell>mysqlbinlog mail-bin.000001
或者shell>mysqlbinlog mail-bin.000001 | tail
因为mail-bin.000001是二进制的日志,所以想看日志就需要用mysqlbinlog命令,将二进制文件转换为日志文件,
进入存放日志文件目录,使用
mysqlbinlog localhost-bin.000202 > new_file_name.log
命令,将目标文件保存为日志文件,可指定保存路径;
在这里插入图片描述
原因是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

你可能感兴趣的:(MariaDB(mysql)的远程连接及日志配置(无废话版))