Wireshark

########################################
Upgrage

sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get dist-upgrade

########################################
Setting

view—-coloring rules
view—-time display format
edit—-set time reference
capture—-interfaces—-options
capture—-optins—-name resolution
statistics—-endpoints
statistics—-conversations
statistics—-protocol hierarchy
statistics—-packet lengths
statistics—-IO graphs
statistics—-tcp stream graph(rrt, throughput, time sequence, window scaling)
statistics—-flow graph
statistics—-http/http2
analyze–expert info composite–notes–retransmission

ctrl-F
ctrl-N
ctrl-B

right click—mark packet
shift+ctrl+n
shift+ctrl+b
right click—print
right click—follow tcp stream( save as raw data/hex dump/ascii)
right click—apply as filter
right click—colorize conversation
right click—decode as

########################################
Capture filter

host, net, port
src, dst
ether, ip, tcp, udp, http, ftp
&&, ||, !

dst host && tcp port
src && port
host
ether host
!ether host
src host
dst
broadcast
ip
!ip6
udp

port
!port
dst port

icmp
icmp[0]==3                          #offset 0,type==3, unreachable
icmp[0]==8 || icmp[0]==0   #type==8 echo request, type==0 echo reply
icmp[0:2]==0x0301             #type==3 unreachable,code==1 host-unreachable
tcp[13]&4==4                      #offset 13 byte’s 3rd bit equals 1
tcp[13]&32==32                  #URG
tcp[13]&16==16                  #ACK
tcp[13]&8==8                      #PSH
tcp[13]&4==4                      #RST
tcp[13]&2==2                      #SYN
tcp[13]&1==1                      #FIN
tcp[13]&18==18                  #SYN,ACK

https://www.wireshark.org/tools/string-cf.html
ether host <client’s mac> and ether host <server’s mac>   #SERVER CLINET
port bootpc       #DHCP
ip proto 1         #ICMP
port ftp             #FTP
not port 3389        #exclude rpd traffic
udp dst port 162    #SNMP request

########################################
Display filter

==,!=,<,>,>=,<=
and, or, xor,not

tcp
dns
!icmp
ip.addr==192.168.1.1 or ip.addr=192.168.0.2
frame.len<=128
!tcp.prot==3389
tcp.flags.syn==1
tcp.flags.rst==1
!arp
smtp || pop || imap

ip.addr
eth.addr
tcp.port     #65535, 1-1023, 1024-65535
frame.time_delta
arp.src.proto_ipv4
tcp.analysis.ack_rtt
tcp.analysis.retransmission
icmp.type
wlan.addr
host
ip.addr eq && tcp.port eq

#HTTP
http
http2
http.set_cookie
http.cookie
http.reuqest.method
http.response.code >= 300 and http.response.code < 400      #redirections
http.response.code >= 400 and http.response.code < 500      #client side error
http.response.code > 500    #server side error
http.user_agent
http.host matches “some-domain-names”

#DNS
dns
dns.query.response==0
dns.query.response==1
dns.flags.rcode==2 #server failure

#FTP
ftp.request.command==”USER”
ftp.request.arg==”anonymous”
ftp.response.code==530 #cracking password
ftp || ftp-data #command control and data transfer

#Signature
frame contains “\x50 \x4B \x03 \x04”      #zip file
frame contains “\x25 \x50 \x 44 \x46”      #pdf file
https://en.wikipedia.org/wiki/List_of_file_signatures

#Regular expression
frame matches “(?i)(password|confidential|secret)”
frame matches “[a-zA-Z0-9\-\.]+\.(?i)(com)” #.com
frame matches “[a-zA-Z0-9._%+-]+@[a-zA-Z0-9._%+-]” #email address
https://regexone.com/

########################################
Wireless

channel: 1-11
one area: 1,6,11

managed mode
ad hoc
master mode
monitor mode

iwconfig
ifconfig <wlan0> down
sudo iwconfig <wlan0> mode monitor
ifconfig <wlan0> up
iwconfig <wlan0> channel <4>
iwlist <wlan0> channel

management: authentication, association, beacon
control: request-to-send, clear-to-send
data

management frame:
timestamp
beacon interval
capability information
ssid parameter set
supported rates
ds parameter

edit–preference–columns–add–rssi/tx rate/frequency channel
wireless–wlan traffic

wlan.bssid eq
wlan.data_rate
wlan.channel
wlan.signal_strength
wlan.sa == xx:xx:xx:xx:xx:xx
wlan.da == xx:xx:xx:xx:xx:xx
wlan host xx:xx:xx:xx:xx:xx

wlan.fc.type eq 0           #management frame
wlan.fc.type eq 1           #control frame
wlan.fc.type eq 2           #data frame

wlan.fc.type_subtype eq 0x00        #association request
wlan.fc.type_subtype eq 0x01        #association response
wlan.fc.type_subtype eq 0x02        #reassociation request
wlan.fc.type_subtype eq 0x03        #reassociation response
wlan.fc.type_subtype eq 0x04        #probe request
wlan.fc.type_subtype eq 0x05        #probe response
wlan.fc.type_subtype eq 0x08        #beacon
wlan.fc.type_subtype eq 0x0A       #disassociate
wlan.fc.type_subtype eq 0x0B       #authentication
wlan.fc.type_subtype eq 0x0C       #deauthentication
wlan.fc.type_subtype eq 0x0D       #action frame
wlan.fc.type_subtype eq 0x18        #block ack requests
wlan.fc.type_subtype eq 0x19        #block ack
wlan.fc.type_subtype eq 0x1A       #power save poll
wlan.fc.type_subtype eq 0x1B       #request to send
wlan.fc.type_subtype eq 0x1C       #clear to send
wlan.fc.type_subtype eq 0x1D       #ack
wlan.fc.type_subtype eq 0x1E       #contention free period end
wlan.fc.type_subtype eq 0x24        #NULL data
wlan.fc.type_subtype eq 0x28        #QoS data
wlan.fc.type_subtype eq 0x2C       #Null QoS data

radiotap.channel.freq == <2412>
1,2412
2,2417
3,2422
4,2427
5,2432
6,2437
7,2442
8,2447
9,2452
10,2457
11,2462

########################################
Problems

Configuration: server side/ client side
Unexpected redirection: DNS cache/ hosts file
RTO(retransmission timeout): view–tiem display format–seconds since previous captured packet
Big data: memory leak
Firewall
DNS use TCP when response time is too long (UDP:53 allow only will block the traffic)
Port mirroring

########################################
Optimization

tcp retransmission
RTO twiced after retransimission
RTT(roundtrip time)
seq=isn(initial sequence number)+data size
ack=seq+data size
Selective acknowledgement:won’t retransmit all the packets after the lost packet
Slide window: ack reception window size in tcp header,if one side set win=0, the other side keep alive

view–time-display format–seconds since previous displayed packet
first 6 packets: tcp handshake request response response
line delay: SYN/ACK
client delay: GET
server delay: response GET

########################################
Security

SYN scan: to discover which ports are open
SYN/ACK: open
RST: closed
https://nmap.org/bennieston-tutorial/
statistics—-conversations #few ip and many tcps
sudo nmap -sP <ip>

OS fingerprint
passive/active
http://lcamtuf.coredump.cx/p0f3/

ARP cache poisioned
edit–preference–columns–add–source mac/dest mac

RAT: remote access trojan
(tcp.flags.syn==1) && (tcp.flags.ack==0)

########################################
Reference

https://www.rfc-editor.org/
http://www.iana.org/protocols
http://wiki.wireshark.org
https://en.wikipedia.org/wiki/List_of_FTP_commands

DNS    http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml
FTP     http://www.iana.org/assignments/ftp-commands-extensions/ftp-commands-extensions.xhtml#ftp-commands-extensions-2
DHCP http://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml
ICMP  http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
TCP    http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
UDP   #more fragments=0, the last fragment
Packet Decoder  #browse the code/epan/disssectors
https://code.wireshark.org/review/gitweb?p=wireshark.git;a=tree;f=epan/dissectors;h=6590cb8f564a1fc777eacba91b1a8ea7659033aa;hb=HEAD

########################################
Tools

https://www.wireshark.org/tools/
https://wiki.wireshark.org/Tools
http://www.secdev.org/projects/scapy/
http://etherape.sourceforge.net/
http://www.comlab.uni-rostock.de/research/tools.html
netdude
cloudshark
pcapr
networkminer
tcpreplay
ngrep
libpcap
hping
domain dossier
iana.org

sudo apt-get install xplico
/etc/init.d/xplico start
/etc/init.d/apache2 start
http://127.0.0.1:9876
user:xplico
password:xplico

sysdig -w dump.scap
sysdig -r dump.scap -c tpprocs_net
sysdig -cl

./sshflow.py SSH.pcap

lscpu | grep Endian
traceroute
tcpdump -i eth0 -s 80 -w /tmp/tcpdump.cap
tcpdump -i eth0 host 10.42.0.1 -w /tmp/tcpdump.cap

#########################################
Supplementary

MTU(1500 bytes)=MSS(maximum segment size)+tcp header(20)+ip header(20)
1460+20+20=1500
Jumbo Frame 9000 bytes
ethernet frame max length=1514 bytes
max data length=1460 bytes
ether net header=14
ip header=20
tcp header=20

Seq(now)=Seq(pre)+Len
Ack=Seq+Len
Len doesn’t include tcp header

SYN start connection
FIN finish connection
RST reset connection

WIN/MSS=number of packets
2^16-1=65535 max window size of tcp
window scale=window size*2^(shift count)

Posted in Linux.

Bootable USB

For Linux:

cat ubuntu-14.04.3-server-amd64.iso >/dev/<usbdisk>

dd if=ubuntu-14.04.3-server-amd64.iso  of=/dev/<usbdisk> bs=1M

 

For Mac:

Disk Utility—Partition—Mac OS Extended(Journaled)—option(GUID)—Apply

diskutil list

diskutil unmountDisk /dev/<usbdisk>

sudo dd if=/Path-to-system-ios-file of=/dev/<usbdisk> bs=1M

diskutil eject /dev/<usbdisk>

“click ignore in the prompt dialogue”

 

For Ubuntu:

Useful Application: “Startup Disk Creator”

Boot repair for dual system:

BIOS–boot mode–UEFI instead of legacy

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install -y boot-repair && boot-repair

 

Update kernel to 4.8 for unsupported firmware

http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8.14/linux-headers-4.8.14-040814-generic_4.8.14-040814.201612101431_amd64.deb

http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8.14/linux-image-4.8.14-040814-generic_4.8.14-040814.201612101431_amd64.deb

http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8.14/linux-headers-4.8.14-040814_4.8.14-040814.201612101431_all.deb

http://mirrors.kernel.org/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.161.1_all.deb

 

Local repository without network

lsblk  (found maybe /dev/sdb1)

sudo mkdir /media/usb

sudo mount /dev/sdb1 /media/usb

sudo add-apt-repository “deb file:///media/usb  $(lsb_release -sc)  main restricted”

sudo apt-get update

 

For Dell workstation T7910 and GTX1080Ti:

BIOS: use legacy instead of UEFI
Add kernel parameter: nouveau.modeset=0

 

Posted in Linux.

MySQL簇

mysql

server1:MGM  172.31.46.53
server2:SQLD  172.31.36.2
server2:NDBD 172.31.47.104
server3:NDBD 172.31.36.158

 

管理节点MGM

安装
cd /var/tmp
wget http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-xxxxx
cd mysql-cluster-xxx
cp bin/ndb_mgm* /usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*
mkdir /usr/local/mysql

配置
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vim config.ini

[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M     #这里对于EC2会很危险,太大了
IndexMemory=18M

[TCP DEFAULT]
portnumber=2202

[NDB_MGMD]
NodeId=1
hostname=172.31.46.53
datadir=/var/lib/mysql-cluster

[NDBD]
NodeId=2
hostname=172.31.47.104
datadir=/usr/local/mysql/data

[NDBD]
NodeId=3
hostname=172.31.36.158
datadir=/usr/local/mysql/data

[MYSQLD]
NodeId=4
hostname= 172.31.36.2

 

SQL节点和存储节点

安装
groupadd mysql
useradd -g mysql mysql

cd /var/tmp
wget http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz
tar -xzvf mysql-cluster-xxxxx
mv mysql-cluster-xxx /usr/local/mysql
cd /usr/local/mysql
scripts/mysql_install_db –user=mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig –add mysql.server

配置
vim /etc/my.cnf
[mysqld]
ndbcluster
ndb-connectstring=172.31.46.53
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock

[mysql_cluster]
ndb-connectstring=172.31.46.53

 

环境测试
关闭所有节点的防火墙
setenforce 0
service iptables stop

注意启动顺序:首先是管理节点,然后是NDBD节点,最后是SQL节点
MGM:
/usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
/usr/local/bin/ndb_mgm
ndb_mgm>show

NDBD:
首次:/usr/local/mysql/bin/ndbd –initial
非首次:/usr/local/mysql/bin/ndbd

SQLD:
/usr/local/mysql/bin/mysqld_safe –user=mysql &

MGM节点关闭集群:/usr/local/bin/ndb_mgm -e shutdown

EC2导致的奇葩问题:
内存太小无法启动mysql
只能自己创建交换分区
dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile
swapon -s

Posted in Linux.

MySQL优化

1.硬盘:增强物理磁盘的I/O性能,使用磁盘阵列,如RAID0+1。
2.内存:最好不要小于2G,最好在4G以上。不要同时运行其他服务。
3.CPU:使用 S.M.P.架构的多路对称CPU
4.搭建服务器集群

5.MySQL自身优化
配置文件模板取自/usr/share/mysql
/etc/my.cnf
[mysqld]
skip-locking                 #取消文件系统的外部锁,避免MySQL的外部锁定,减少出错几率增强稳定性
skip-name-resolve       #取消域名反解析,远程连接受影响,只能使用ip
key_buffer_size           #索引缓冲区大小
back_log                      #等候连接的队列的大小,默认50,必须小于操作系统的限制,推荐小于512
table_cache                 #表缓存区的大小
sort_buffer_size          #排序缓冲区的大小
read_buffer_size         #读表缓冲区的大小
join_buffer_size          #跨表查询操作所能使用的缓冲区大小。
myisam_sort_buffer_size MyISAM 表发生变化时重新排序所需的缓冲。
tmp_table_size            #临时表的大小
max_heap_table_size #临时表的大小
thread_cache               #线程缓存区的大小
query_cache_size        #查询缓存区的大小
set-variable                   #超时时间,避免长连接
max_connect_errors   #导致锁定的最大连接次数
wait_timeout                #空闲超时阀值
thread_concurrency    #最大并发线程数,CPU数量*2
log-slow-queries=slow.log慢查询的记录日志
long_query_time         #多长时间的查询算做是慢查询
Log-queries-not-using-indexes指定为没有使用索引的查询
skip-innodb
skip-bdb                       #关闭不需要的表类型

查看状态参数
mysql>show status;

重要参数:
[key_buffer_size]
mysql>show status like ‘%key_read%’;
Key_reads                 从磁盘查询的个数,
Key_read_requests  从缓存查询操作的总数。
key_reads/key_read_requests就是不中比率,如果每1000个请求中命中磁盘的数目超过1个,应该增大关键字缓冲区。如果独立的db服务器,可以设置80%的内存总量用于索引缓冲区,一般情况下对于内存在4GB左右的服务器该参数可设置为256M或384M

[sor_buffer_size]
mysql>show status like “sort%”;
Sort_merge_passes包括两步。MySQL首先尝试在内存中做排序,使用的内存大小由系统变量Sort_buffer_size决定,如果它的大小不够把所有的记录都读到内存中,MySQL就会把每次在内存中排序的结果存到临时文中,等MySQL找到所有记录之后,再把临时文件中的记录做一次排序。再次排序就会增加Sort_merge_passes.实际上,MySQL 会用另一个临时文件来存再次排序的结果,所以通常会看到Sort_merge_passes增加的数值是建临时文件数的两倍。因为用到了临时文件,所以速度较慢,增加Sort_buffer_size可以减Sort_merge_passes和创建临时文件的次数。但盲目的增加Sort_buffer_size并不一定能提高速度

[read_buffer_size]
mysql> SHOW STATUS LIKE “com_select”;
mysql> SHOW STATUS LIKE “handler_read_rnd_next”;
Handler_read_rnd_next/Com_select得出了表扫描比率,如果该值超过4000,就应该增大read_buffer_size的值,但是如何read_buffer_size超过了8M仍然不见效果,应该对查询操作进行调优

[tmp_table_size]
mysql> SHOW STATUS LIKE ‘created_tmp%’;
每次使用临时表都会增大created_tmp_tables,基于磁盘的表也会增大created_tmp_disk_tables。tmp_table_size和max_heap_table_size都可以控制临时表的大小,两个值都需要设置

[tread_cache]
mysql> SHOW STATUS LIKE ‘threads%’;
每次mysqld需要创建一个新线程时,这个值都会增加,如果连续执行SHOW STATUS命令时,Threads_created的值快速增加,就应该尝试增大线程缓存

[query_cache_size]
mysql> SHOW VARIABLES LIKE ‘%query_cache%’;
mysql> SHOW STATUS LIKE ‘Qcache%’;
Qcache_free_blocks           缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块
Qcache_free_memory        缓存中的空闲内存
Qcache_hits                        每次查询在缓存中命中时就增大
Qcache_inserts                   每次插入一个查询时就增大,命中次数除以插入次数就是不中比率,用1减去这个值就是命中率
Qcache_lowmem_prunes  缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。如果这个数字在不断增长,表示碎片非常严重,或者内存很少(参考free_blocks和free_memory)。
Qcache_not_cached          不适合进行缓存的查询的数量,通常是由于这些查询不是SELECT语句
Qcache_queries_in_cache当前缓存的查询(和响应)的数量
Qcache_total_blocks          缓存中块的数量

 

表类型
Berkeley DB(DBD)表,提供事务处理功能
HEAP表,是MySQL中存取数据最快的表。使用存储在动态内存中的一个哈希索引。如果MySQL或服务器崩溃,表中数据将丢失
MERGE表,是由多个MyISAM表合并成的表,提高速度、搜索效率、修复效率并节省磁盘空间
MyIASM表,是MySQL的缺省表类型。基于IASM代码,有很多有用的扩展
MyIASM表的优点:
1、MyIASM表小于IASM 表,使用较少资源
2、MyIASM 表在不同的平台上二进制层可移植
3、更大的键码尺寸,更大的键码上限
在创建表的时候,可以指定表类型CREATE TABLE tablename TYPE=HEAP ( );

Posted in Linux.

MySQL双机热备

从库和主库同步,原理是从库去读取主库的二进制日志文件,并按照主库的二进制文件的记录对从库进行同样的操作,以达到从库与主库内容同步的效果。

主库:
vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=logname
binlog-do-db=db1,db2,db3
binlog-ignore-db=db4,db5

mysql>grant replication slave,reload,super on *.* to slave@slave_ip identified by ‘1234’;
msql>flush privileges;

service iptables stop
setenforce 0

从库:
mysql>grant all on *.* to slave@slave_ip identified by ‘1234’;
mysql>flush privileges;
mysql>mysql -u slave -h master_ip -p

主库备份:
mysqldump —all-database > dbbackup.sql
scp dbbackup.sql user@slave_ip:~
从库导入备份:
mysql -u root -p < dbbackup.sql

从库修改配置:
service mysqld stop
vim /etc/my.cnf
[mysqld]
server-id=2
log-bin=logname
master-host=master_ip
master-user=slave
master-password=1234
service mysqld start
mysql -u root -p
mysql>slave start;    #也有slave stop
mysql>load data from master;
mysql>show slave status\G;

主库测试:
建表
检查从库同步
mysql>show master status\G;

重新建立主从关系时解决方案:
1.删除/var/lib/mysql中的master.info, 重启服务器
2.另外的方法
主库:
mysql>show master status\G;
从库:
mysql>slave stop;
mysql>change master to
master_host=‘new_ip’,
master_user=‘user’,
master_password=’1234’,
master_log_file=‘logname’,
master_log_pos=‘log_pos’;
mysql>slave start;

反向进行配置,可以建立互为主从的关系。

Posted in Linux.

MySQL备份

系统备份
service mysqld stop
cd /var/lib/mysql
tar zxcf mydb_backup.tgz db_name
service mysqld start

mysqldump备份
mysqldump –user=root -p db_name > /backup/db_name.sql
mysqldump –user=root -p db_name < /backup/db_name.sql
mysqldump –user=root -p –all-databases > /backup/db_name.sql

 

二进制日志备份
vim /etc/my.cnf
[mysqld]
log-bin=<filename>
service mysqld restart

mysqlbinlog –stop-datetime=”2008-06-18 9:59:59″ /var/lib/mysql/bin.123456 | mysql -u root -p mypwd
mysqlbinlog –start-datetime=”2008-06-18 10:01:00″ /var/lib/mysql/bin.123456 | mysql -u root -p mypwd

mysqlbinlog –start-datetime=”2008-06-18 9:55:00″ –stop-datetime=”2008-06-18 10:05:00″ /var/lib/mysql/bin.123456 > /tmp/mysql_restore.sql
mysqlbinlog –stop-position=”368312″ /var/lib/mysql/bin.123456 | mysql -u root -p mypwd
mysqlbinlog –start-position=”368315″ /var/lib/mysql/bin.123456 | mysql -u root – pmypwd

Posted in Linux.

MySQL

参考文档
英文 http://dev.mysql.com/doc/
中文http://dev.mysql.com/doc/refman/5.1/zh/index.html

安装 yum install mysql mysql-server -y
启动 service mysqld start
关闭 service mysqld stop
登录 mysql -u <username> -h <hostname/ip> -p
退出 exit/quit

基本常用命令
show databases;
create database <db_name>;
drop database <db_name>;
use <db_name>;
show tables;
desc <table_name>;
drop table <table_name>;
create table <table_name> (column1 type, column2 type,…);
insert into <table_name> set column1=xx, column2=xx;
insert into <tableName> (column_name) values (value);
insert into <tableName> values (all_values);
select * from <table_name>;
select <column> from <table_name> where <clause>;
delete from <table_name>;
delete from <table_name> where <clause>;
update <table_name> set column=value where <clause>;
create index <index> on <table_name> (column);
create unique index <index> on <table_name> (column);
alter table <table_name> add index <index> (column);

更多常用命令,持续更新:
https://docs.google.com/document/d/1MGzLrRh88HBqY1MUDf2ryeajiFQonPCqPCIxnAhi-6I/edit?usp=sharing

 

MySQL客户端程序

mysql
交互式输入SQL语句或从文件导入,以批处理模式执行SQL语句。
mysql
mysql db_name
mysql  –user=user_name  –password=your_password
mysql –help
批处理
mysql < sql_sript
交互式运行脚本
mysql>source sql_sript
mysql>\.  sql_sript
避免自动重连导致的误操作,可以使用–skip-reconnect选项启动mysql客户程序。

mysqladmin
执行管理操作的客户程序
创建   mysqladmin create db_name
删除   mysqladmin drop db_name
状态   mysqladmin extended-status
重载授权表  mysqladmin flush-privileges
改密码  mysqladmin -u username -p password new-password
如果new-password包含空格或其它命令解释符的特殊字符,需要用引号将它引起来
mysqladmin password “my new password”
关闭   mysqladmin shutdown

mysqlbinlog
从二进制日志读取SQL语句的工具
查看 mysqlbinlog binlog.0000001
恢复 mysqlbinlog binlog.000001 | mysql
或者:
mysqlbinlog binlog.000001 > /tmp/statements.sql
mysqlbinlog binlog.000002 >> /tmp/statements.sql
mysql -e “source /tmp/statements.sql”
避免当前一个二进制日志文件使用到临时表的时候,由于退出进程时自动
删除临时表,而造成的后一个二进制日志文件无法继续使用临时表的问题。

mysqlcheck
检查、修复、分析以及优化表的客户程序
mysqlcheck –databases db_name1 [db_name2 db_name3 ….]
mysqlcheck –all-database
mysqlcheck    默认检查所有数据库
mysqlcheck –repair db_name
mysqlcheck –auto-repair db_name
可以通过改变它的文件名来更改它的默认操作
whereis mysqlcheck
cp /usr/bin/mysqlcheck /usr/bin/mysqlrepair
mysqlrepair      默认选项为–repair
mysqlanalyze   默认选项为–analyze
mysqloptimize 默认选项为–optimize

mysqldump
数据库备份程序,它制作出来的备份可以跨平台,跨文件系统,跨版本地进行恢复
mysqldump [options] db_name [tables]
mysqldump [options] —database DB1 [DB2 DB3…]
mysqldump [options] –all-database
mysqldump –help 查看options
mysqldump db_name table_name > backup.sql
mysql db_name < backup.sql

mysqlimport
数据库恢复程序
mysqlimport [options] db_name textfile1 [textfile2 …]
mysqlimport db_name backup1.sql
mysqlimport –help 查看参数。
mysqlimport -u root -p –force db_name backup1.sql

 

用户与权限

grant all [privileges] on *.* to ‘admin’@’192.168.0.254’ identified by ‘123456’ [with grant option];
所有库的所有表   用户   ip     密码       可授权其他用户
被授权用户不存在时,会被创建
revoke all on *.* from ‘admin’@’192.168.0.254′;
drop user admin@’192.168.0.254′
flush privileges;
grant select,update,delete,insert on bookshop.reserve to admin@’localhost’ identified by ‘admin’;
grant usage on *.* to admin@’localhost’ identified by ‘root’;

使用系统表管理用户
use mysql;
desc user;
select host,user,password from user;
update user set password=password(‘123456′) where user=’root’;

忘记管理员密码
service mysqld stop
或者:killall -TERM mysqld
mysqld_safe –skip-grant-tables
mysql
use msyql;
update user set password=password(‘new_pass’) where user=”root”;
exit
service mysqld restart

Posted in Linux.

OpenCV安装

For Mac
1.安装brew
cd /usr/local/src
sudo mkdir homebrew
curl -L https://github.com/mxcl/homebrew/tarball/master | sudo tar xz –strip 1 -C homebrew
vim ~/.bash_profile
export PATH=/usr/local/src/homebrew/bin:$PATH
source .bash_profile
brew -v

2.安装cmake
sudo brew install cmake
cmake –version

3.安装command line tools
xcode-select –install

4.安装OpenCV
brew tap homebrew/science
brew install opencv

注:homebrew遇到的权限问题
sudo chmod -R g+w 授权给相应路径,例如:
sudo chmod -R g+w /Library/Caches/Homebrew

 

Install from source code:

Download the source code.
mv opencv-3.1.0 /usr/local/src/
cd opencv-3.1.0
mkdir release
cd release
cmake -G “Unix Makefiles” ..
make
sudo make install

library path:/usr/local/lib
headers path:/usr/local/include

 

Posted in AI.

正则表达式

.    表示任何一个单一字符
.*  表示另个或任意个字符
^a 表示以a为首的行
a$ 表示以a为尾的行
\<good   表示以good开头的单词
good\>   表示以good结尾的单词
[abc]       表示当前位置a或b或c
[^abc]     表示出了abc以外的字符
a*            表示空,a,aa,aaa, ………
a?            表示一个或零个单独的a
a+            表示a,aa,aaa,………….
a\{n\}     表示重复了n次的a
^      表示匹配的字符必须在最前边  ^a
$      表示匹配最末的字符a$
*       匹配*前面的字符0次或n次a*
+       匹配+号前面的字符1次或n次a+
?      匹配?前面的字符0次或1次
.         匹配除换行符以外的所有单个的字符
(x)     匹配x并记录匹配的值[1]…….[n]   $1…..$9
x|y     匹配x或y
{n}     匹配前面n个字符
{n,}    匹配前面至少n个字符
{n,m} 匹配前面至少n个,至多m个字符
[xyz]  匹配列出的任一字符,可以用-来表示范围  [abc]==[a-c]
[^xyz]匹配除了李处字符以外的,可以用-来表示范围
[b]       匹配一个空格
b         匹配一个单词的分界线
B          匹配一个单词的非分界线
cX        匹配一个字符串中的控制字符
d           匹配一个数字[0-9]
D          匹配任何的非数字[^0-9]
f            匹配一个表单符
n           匹配一个换行符
r            匹配一个回车符
s            [fnrtv]
S            [^fnrtv]
t             匹配一个制表符
v            匹配一个顶头制表符
w           匹配所有数字和字母以及下划线[A-Za-z0-9_]
W          [^A-Za-z0-9_]
n            匹配一个正则表达式的最后一个子串的n的值(技术做圆括号)

 

Posted in Linux.

Tmux

下载
wget http://sourceforge.net/projects/tmux/files/tmux/tmux-1.6/tmux-1.6.tar.gz/download

安装
tar zxvf tmux-1.6.tar.gz
cd tmux-1.6
./configure
yum install libevent-devel.x86_64
make
make install

启动
tmux

结构
tmux使用C/S模型构建,主要包括以下单元模块:
一个tmux命令执行后启动一个tmux服务
一个tmux服务可以拥有多个session,一个session可以看作是tmux管理下的伪终端的一个集合
一个session可能会有多个window与之关联,每个window都是一个伪终端,会占据整个屏幕
一个window可以被分割成多个pane

 

配置文件
vim ~/.tmux.conf

#此类配置可以在命令行模式中输入show-options -g查询
set-option -g base-index 1 #窗口的初始序号;默认为0,这里设置为1
set-option -g display-time 5000 #提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set-option -g repeat-time 1000 #控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒
set-option -g status-keys vi #操作状态栏时的默认键盘布局;可以设置为vi或emacs
set-option -g status-right “#(date +%H:%M’ ‘)” #状态栏右方的内容;这里的设置将得到类似23:59的显示
set-option -g status-right-length 10 #状态栏右方的内容长度;建议把更多的空间留给状态栏左方(用于列出当前窗口)
set-option -g status-utf8 on #开启状态栏的UTF-8支持

#此类设置可以在命令行模式中输入show-window-options -g查询
set-window-option -g mode-keys vi #复制模式中的默认键盘布局;可以设置为vi或emacs
set-window-option -g utf8 on #开启窗口的UTF-8支持

#将激活控制台的快捷键由Ctrl+b修改为Ctrl+a,Ctrl+a是Screen的快捷键
set-option -g prefix C-a
unbind-key C-b
bind-key C-a send-prefix

#添加自定义快捷键
bind-key z kill-session #按z结束当前会话;相当于进入命令行模式后输入kill-session
bind-key h select-layout even-horizontal #按h将当前面板布局切换为even-horizontal;相当于进入命令行模式后输入select-layout even-horizontal
bind-key v select-layout even-vertical #按v将当前面板布局切换为even-vertical;相当于进入命令行模式后输入select-layout even-vertical

常用命令
tmux list-session
tmux new -s session
tmux a -t session
tmux kill-session -t session
tmux kill-server
tmux ls
tmux -r

tmux的使用问题:
使用putty连接到远程的机器是,需要设置windows->Translation->Remote characters set 为UTF-8, 否则tmux的windows中pane的间隔线显示有问题。
在修改tmux的conf后,需要重启tmux服务, 此时需要ctrl+c / : kill-server。
在多个panes的时候拷贝粘贴是个问题,需要ctrl+c / [ 进入复制模式。

复制模式copy-mode
a.PREFIX [ 进入复制模式
b.按 space 开始复制,移动光标选择复制区域
c.按 Enter 复制并退出copy-mode。
d.将光标移动到指定位置,按 PREIFX ] 粘贴

滚屏
滚屏要进入copy-mode,即PREFIX+[,然后就可以用上下键来滚动屏幕,配置了vi快捷键模式,就可以像操作vi一样来滚动屏幕,非常的方便。
退出直接按‘q’键即可。

快捷键 ctrl+a+{}
系统操作
?    #列出所有快捷键;按q返回
d   #脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
D   #选择要脱离的会话;在同时开启了多个会话时使用
Ctrl+z   #挂起当前会话
r    #强制重绘未脱离的会话
s    #选择并切换会话;在同时开启了多个会话时使用
:    #进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
[    #进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出
~   #列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
窗口操作
c    #创建新窗口
&    #关闭当前窗口
数字键   #切换至指定窗口
p    #切换至上一窗口
n    #切换至下一窗口
l     #在前后两个窗口间互相切换
w   #通过窗口列表切换窗口
,    #重命名当前窗口;这样便于识别
.    #修改当前窗口编号;相当于窗口重新排序
f    #在所有窗口中查找指定文本
面板操作
”    #将当前面板平分为上下两块
%   #将当前面板平分为左右两块
x   #关闭当前面板
!   #将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
Ctrl+方向键   #以1个单元格为单位移动边缘以调整当前面板大小
Alt+方向键    #以5个单元格为单位移动边缘以调整当前面板大小
Space    #在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
q    #显示面板编号
o    #在当前窗口中选择下一面板
Alt+o    #逆时针旋转当前窗口的面板
Ctrl+o    #顺时针旋转当前窗口的面板

C-a C-o        #调换窗口位置
C-a 空格键   #采用下一个内置布局
C-a !             #把当前窗口变为新窗口
C-a &           #确认后退出 tmux
C-a t             #显示时钟

Posted in Linux.