Category Archives: code

perl, lua, bash, c…

如何实现 MySQL 的一次一密登录

By | 2017/08/18

如何实现 MySQL 的一次一密登录 背景介绍 在日常工作环境中, 开发或者测试人员经常需要连接测试库、线上库等查看表结构或数据来验证程序的功能. 实际上让 DBA 协助开发者查看信息会是特别繁琐且无趣的事情, 所以为了方便起见会将数据库的权限分发给开发或者测试人员. 不过长此以往下去有几件事情会让 DBA 深恶痛绝: 1. 账号会在开发者之间相互传递; 2. 为了方便开发者会以快捷命令的方式查看信息, 密码信息容易暴露; 3. 开发者忘记密码, DBA 可能需要重置以通知所有其他人员修改密码; 事实上, 上述几种情况是很难避免的, 只要有人工参与就会有这些潜在危险的隐患, 所以我们就需要提供一个相对方便记住的又能保证相对安全的方式供开发者使用. 下面则从不同层面简单的对这种方式进行描述. 管理主机 如果从系统层面来看, 我们建议最好把所有的开发者都集中到一台管理主机上登录, 只有开发者连接到这台机器上, 才能通过该机器连接测试库, 线上库等进行查询信息操作. 如下图所示: +————+ ssh +————–+ +———–+ | developers | ———-> | manager host | ———> | databases | +————+ +————–+ +———–+ 开发者通过 ssh… Read More »

percona UDF 介绍

By | 2017/03/24

简介 在较新的 percona 分之版本中, 其提供了三个自定义的哈希函数, 分别为 fnv_64, fnv1a_64 和 murmur_hash, 这三个函数可以提供更快速度和更小碰撞率的哈希计算, 从这点看可以用来替换 md5, crc32 等函数, 而且由于速度快、碰撞率小的特性, 这些函数也可以作为一致性哈希函数来使用. 如何安装这三个函数详见 udf_percona_toolkit. 函数介绍 大致了解这三个函数后, 再来简单说明这三个函数的相关实现. fnv 哈希算法 FNV哈希算法最早在1991年提出, 是 Fowler-Noll-Vo 的简写,其以三位发明人Glenn Fowler,Landon Curt Noll,Phong Vo的名字来命名的. 另外现今很多流行的中间件或分布式工具都有该函数的申请, 比如 twemproxy 等工具. FNV能快速hash大量数据并保持较小的冲突率,它的高度分散使它适用于hash一些非常相近的字符串,比如URL,hostname,文件名,text,IP地址等. 现有的版本有 FNV-1 和 FNV-1a, FNV-0 已经废弃, FNV-1 和 FNV-1a 两个函数生成的 hash 值有以下两个限制(FNV offset basis 为无符号整数): 无符号整型; hash 值的位数为… Read More »

如何安全的使用 bash 操作 MySQL

By | 2016/10/12

最近在 percona blog 中看到这篇文章 use-mysql-shell-securely-from-bash , 讲述如何在 Bash 中安全的使用 MySQL 进行查询. 字面意思的安全要比文章所说的更宽泛, 不过这篇文章有几点可取之处值得学习, 因为 Bash 的方便性, 我们经常用到 Bash 来完成各种脚本任务, 如果操作数据库的话(比如备份, 监控等), 任何可以执行 ps aux 命令的用户都可以看到正在执行的命令, 一些敏感信息如配置文件, 用户密码等都可以看到, 另外在 MySQL 5.6 之后命令行下用密码连接数据库也会得到警告信息 Warning: Using a password on the command line interface can be insecure. 如何隐藏进程中的密码信息是我们都需要关注的, 文章中的作者用了很巧妙的方式来达到隐藏的目的, 甚至 ip, port 等也可以隐藏, 并且 5.6 版本中的 warning 信息也不会再出现, 我在下面会基于此技巧进行阐述,… Read More »

Common utilities for sysadmin/dba

By | 2016/05/26

sys-toolkit Some useful scripts to sysadmins/dbas. read more from: https://github.com/arstercz/sys-toolkit toolkit lists: sys-genpass sys-nton sys-pubip sys-ascii sys-ipton sys-lock-run sys-repeat sys-checkport sys-echo-stderr sys-php-chroot sys-tcp-port-proxy sys-shell-type sys-memory-maps sys-mem-redis-summary sys-mysql-summary sys-mysql-adj sys-mysql-kill-blocked-thread sys-mysql-kill-long-query sys-mysql-block-account sys-mysql-createdb sys-mysql-qps sys-mysql-set-maxconnections sys-mysql-sql-reject

Perl one line command – 常用正则

By | 2015/03/04

Perl one line command – 常用正则 本章说明一些常用的正则表达式, 比如匹配 IP 地址, HTTP 头信息, email 地址等. 1. 匹配 IPv4 地址 IP 地址格式 xxx.xxx.xxx.xxx, 使用 \d 来匹配数字,通用的做法如下: /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ {1,3}表示匹配最少一个, 最多3个数字,这个表达式没有检查地址的有效性(不能大于255),所以也能匹配出无效的地址,但是对于有效的地址都能匹配出来; 我们可以发现前三部分是一样的, 可以改成: /^(\d{1,3}\.){3}\d{1,3}$/