mysql显示当前执行sql: show processlist 详解

最近排查一些MySQL的问题,会经常用到 show processlist,所以在这里把这个命令总结一下,做个备忘,以备不时只需。show processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程。除非单独个这个用户赋予了PROCESS 权限。
v2-eb4254945a43d5fdc0e8718da8183aa6_b.jpg

v2-1c028842dcc9e9b659279d3660e04e29_b.jpg

v2-8f56f112c1809b4308258e154de41942_b.jpg

show processlist 显示的信息都是来自MySQL系统库 information_schema 中的 processlist 表。所以使用下面的查询语句可以获得相同的结果:

查看

ss-redir透明代理

1、编译出ss-redir

2、运行ss-redir在12345端口,如果开启udp,请一定确认服务端支持udp

3、将经过本机TCP流量转发到ss-redir

#TCP
iptables -t nat -N SSTCP
iptables -t nat -A SSTCP -d 47.88.230.202/32 -j RETURN
iptables -t nat -A SSTCP -d 0.0.0.0/8 -j RETURN
iptables -t nat -A SSTCP -d 10.0.0.0/8 -j RETURN
iptables -t nat -A SSTCP -d 127.0.0.0/8 -j RETURN
iptables -t nat -A SSTCP -d 169.254.0.0/16 -j RETURN
iptables -t nat -A SSTCP -d 172.16.0.0/12 -j RETURN
iptables -t nat -A SSTCP -d 192.168.0.0/16 -j RETURN
iptables -t nat -A SSTCP -d 224.0.0.0/4 -j RETURN
iptables -t nat -A SSTCP -d 240.0.0.0/4 -j RETURN
iptables -t nat -A SSTCP -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A PREROUTING -j SSTCP

4、使用TPROXY target转发UDP流量

#增加IP mark, tproxy转发需要
ip rule add fwmark 0x01/0x01 table 100
ip route add local 0.0.0.0/0 dev lo table 100
#UDP
iptables -t mangle -N SSUDP
iptables -t mangle -A SSUDP -d 47.88.230.202/32 -j RETURN
iptables -t mangle -A SSUDP -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A SSUDP -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A SSUDP -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A SSUDP -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A SSUDP -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A SSUDP -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A SSUDP -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A SSUDP -d 240.0.0.0/4 -j RETURN
iptables -t mangle -A SSUDP -p udp -j TPROXY --on-port 12345 --on-ip 0.0.0.0 --tproxy-mark 0x1/0x1
iptables -t mangle -A PREROUTING -j SSUDP

3、完成。如有异常,请查看ss-redir的log,记得加上-v

理论上redsocks也可以这样。

使用redsocks转发流量到socks5服务器

安装redsocks

apt install redsocks

然后,编辑配置文件

vim /etc/redsocks.conf

主要编辑6项

local_ip = 0.0.0.0;
local_port = 12345;

// `ip' and `port' are IP and tcp-port of proxy-server
// You can also use hostname instead of IP, only one (random)
// address of multihomed host will be used.
ip = <socks5服务器地址>;
port = <socks5服务器端口>;


// known types: socks4, socks5, http-connect, http-relay
type = socks5;

login = "<socks5服务器账号>";
password = "<socks5服务器密码>";

然后重启redsocks

`systemctl restart redsocks`

查看

Nginx设置目录密码认证访问

添加nginx地址匹配规则

location ^~ /encrypt/{
        auth_basic "Authorized users only";
        auth_basic_user_file /home/.htpasswd;
}

安装apache2-utils以使用htpasswd命令来生成哈希密码文件
apt install apache2-utils

htpasswd -bdc .htpasswd username password

大功告成,记得 nginx -s reload

ubuntu16 安装 phantomjs 给网站截图

安装无头浏览器
apt install phantomjs

模拟窗口终端

运行phantomjs报错

QXcbConnection: Could not connect to display

PhantomJS has crashed. Please read the bug reporting guide at

<http://phantomjs.org/bug-reporting.html> and file a bug report.

Aborted

因为无头浏览器需要窗口渲染,使用QT_QPA_PLATFORM=offscreen虽然可以,但是却会无法渲染字体。
所以需要安装xvfb,使用xvfb-run来运行phantomjs

apt install xvfb

安装/上传字体

mkdir /usr/share/fonts/xpfonts

查看

linux自动挂载USB设备

通过给linux下的设备管理服务udev添加规则配置文件,可以实现命令行下USB存储设备自动挂载。

编辑文件/etc/udev/rules.d/10-usbstorage.rules

输入

KERNEL!="sd*", GOTO="media_by_label_auto_mount_end"
SUBSYSTEM!="block",GOTO="media_by_label_auto_mount_end"
IMPORT{program}="/sbin/blkid -o udev -p %N"
ENV{ID_FS_TYPE}=="", GOTO="media_by_label_auto_mount_end"
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="Untitled-%k"
ACTION=="add", ENV{mount_options}="relatime,sync"
ACTION=="add", ENV{ID_FS_TYPE}=="vfat", ENV{mount_options}="iocharset=utf8,umask=000"
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", ENV{mount_options}="iocharset=utf8,umask=000"
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}" 
LABEL="media_by_label_auto_mount_end"

保存退出,再次插入usb存储设备会自动挂载到/media目录下面的目录 并且支持utf8格式的中文文件名。

参考:
树莓派USB存储设备自动挂载 | 树莓派实验室
添加Udev规则,让Linux自动挂载U盘(转载) - 陈建的专栏 - CSDN博客

如何匿名开发软件

这篇文章是从英文机器翻译,以消除我们的写作风格,这可能用于弄清楚我们是谁。

如何匿名开发软件

可能有些人会希望以尽可能匿名的方式开发和发布软件。我们不会指出特定的情况,但你可以明白我们在说什么。特别是在最近发生的事情之后。

有成功的案例,人们以完全匿名的方式发布了颇受欢迎的软件。直到今天,没有人知道BitCoin的父亲Satoshi Nakamoto是谁。在2012年,有人接管了三万台设备并扫描了整个IPv4地址空间,没有人知道是谁做的。然而,随着近年来数据科学的发展,这样做日益困难。但我们认为这仍然是可能的。这里有一些技巧。

如果您认为我们错了,或者错过了一些点,请随时指出。

(当然,我们在这里谈论开源软件)

基础

无论您是匿名还是不匿名,这都是您应该做的事情:让您的帐户安全。

你应该确保没有人能够黑入你的帐户。这包括:

查看

开启TCP BBR拥塞控制算法

1 下载最新内核 4.9+
Kernel/LTSEnablementStack - Ubuntu Wiki
更新完内核如果 uname -r 看见没有变化,说明需要 reboot 一下

2 开启bbr
执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行以下代码添加内核模块

modprobe tcp_bbr
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

保存生效

sysctl -p

执行以下命令来验证

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

如果结果都有 bbr, 则证明你的内核已开启 bbr

执行 lsmod | grep bbr, 看到有 tcp_bbr 模块即说明 bbr 已启动

另外,阿里云的专用网络,因为网卡是nat的内网,所以bbr不会有效果。ip addr 看到的只是内网地址的话,就是专用网络

参考:开启TCP BBR拥塞控制算法 · iMeiji/shadowsocks_install Wiki

MYSQL隔离级别

名词定义
脏读:事务A读到事务B尚未提交的修改(update,Insert,Delete)记录后,事务B回滚了,事务A读取到的就是不存在的数据;

不可重复读:事务A第一次读取后,事务B进行了修改(Delete、Update),再当事务A读取时,发现数据在一个事务中前后不一;

幻读:和不可重复读类似,但幻读针对Insert操作,当事务A第一读取是表内有10行数据,此时事务B插入(Insert)了一条,当事务A再次读取时发现变成了11行,造成幻觉;

丢失更新:事务A和事务B拿到同一份数据1,A在1的基础上加1变成2后,此时B也在1的基础上加2变成3,由于B提交晚,因此最终数据变成了3,覆盖了事务A的操作,称为丢失更新;

mysql隔离级别

事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)

mysql默认的事务隔离级别为repeatable-read

树莓派安装php5.6

sudo vim /etc/apt/sources.list
将内容改成下面这样

#deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-free contrib

然后 sudo apt-get update

然后 sudo apt-get install php5 php5-fpm php5-cli

然后 php -v 看看是不是装好了5.6

别忘了安装pdo sudo apt-get install php5-mysqlnd php5-sqlite php-db

查看