6 月 282016
 

 

已启用iptables防火墙服务的主机,开放1099端口,启动服务,发现visualvm无法获取数据,jstatd日志无输出

[root@linuxcache bin]# ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true -p 1099
Jun 28, 2016 3:06:04 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(1)-120.111.100.123: [120.111.100.123: sun.rmi.registry.RegistryImpl[0:0:0, 0]: void rebind(java.lang.String, java.rmi.Remote)]
Jun 28, 2016 3:06:04 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(2)-120.111.100.123: [120.111.100.123: sun.rmi.transport.DGCImpl[0:0:0, 2]: java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[], long, java.rmi.dgc.Lease)]
Jun 28, 2016 3:06:13 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(3)-58.60.169.210: [58.60.169.210: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]

通过查看jstatd进程端口监听,发现进程额外启用了一个随机端口。

[root@linuxcache ~]# netstat -lutnp |grep jstatd
tcp 0 0 0.0.0.0:1099 0.0.0.0:* LISTEN 23209/./jstatd 
tcp 0 0 0.0.0.0:55941 0.0.0.0:* LISTEN 23209/./jstatd 
[root@linuxcache ~]#

在防火墙中放开随机监听端口后,jstatd日志正常输出,visualvm连接成功并显示数据。

[root@linuxcache ~]# iptables -I INPUT -p tcp --dport 55941 -j ACCEPT
[root@linuxcache ~]#
6 月 232016
 

MySQL Workbench

Failed to Connect to MySQL at xxx.xxx.xxx.xxx:3306 with user ssrdba

Host '113.118.138.xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

用于防止暴力猜解密码的安全设置。

同一IP在一段时间内产生超过系统参数指定的已断开数据库连接次数,系统强制不再接受任何连接请求。

系统默认参数值

mysql-max-connect-errors-01
解除锁定的方法

[root@iZ94ns7f32vZ ~]# mysqladmin -uroot -p flush-hosts
Enter password:
[root@iZ94ns7f32vZ ~]#

修改参数值

set global max_connect_errors = 100;

或修改my.cnf配置文件

max_connect_errors = 100

6 月 172016
 

内建角色

https://docs.mongodb.com/v2.6/reference/built-in-roles/

命令参考

https://docs.mongodb.com/v2.6/reference/method/

MongoDB 2.6.11 CentOS7.2.1511 EPEL
安全设置
以安全认证模式启动

启动时使用参数–auth或修改配置文件启用认证后重启服务

[root@localhost ~]# vi /etc/mongod.conf
# Run with/without security (without by default)
#auth = true
#noauth = true
auth = true

创建用户帐户及角色

> use admin
> db.createUser({"user":"admin","pwd":"adminpwd","roles":["root"]})
>

重新启动Mongodb服务
创建一个新数据库并设置用户帐户及角色

> use admin
> db.auth("admin","passwd")
1
> use abc123
switched to db abc123
> db.createUser({"user":"abc","pwd":"123","roles":["readWrite"]})
Successfully added user: { "user" : "abc", "roles" : [ "readWrite" ] }
>

查看系统内用户信息

> use admin
switched to db admin
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "MONGODB-CR" : 
"3187df44c217d30c29494785321f996f" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "abc123.abc", "user" : "abc", "db" : "abc123", "credentials" : { "MONGODB-CR" : 
"ecd40369f09cd19405cba88d9cab93df" }, "roles" : [ { "role" : "readWrite", "db" : "abc123" } ] 
}
>

再次增加用户

> use abc123
switched to db abc123
> db.createUser({"user":"abcd","pwd":"321","roles":["readWrite"]})
Successfully added user: { "user" : "abcd", "roles" : [ "readWrite" ] }
>

再次查看系统内用户信息

> use admin
switched to db admin
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "MONGODB-CR" : 
"3187df44c217d30c29494785321f996f" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "abc123.abc", "user" : "abc", "db" : "abc123", "credentials" : { "MONGODB-CR" : 
"ecd40369f09cd19405cba88d9cab93df" }, "roles" : [ { "role" : "readWrite", "db" : "abc123" } ] 
}
{ "_id" : "abc123.abcd", "user" : "abcd", "db" : "abc123", "credentials" : { "MONGODB-CR" : 
"10eb9fb6afcfb3e2b483e0d0c12f5b0a" }, "roles" : [ { "role" : "readWrite", "db" : "abc123" } ] 
}
>

删除用户

> use abc123
switched to db abc123
> db.dropUser("abcd")
true
> use admin
switched to db admin
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "MONGODB-CR" : 
"3187df44c217d30c29494785321f996f" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "abc123.abc", "user" : "abc", "db" : "abc123", "credentials" : { "MONGODB-CR" : 
"ecd40369f09cd19405cba88d9cab93df" }, "roles" : [ { "role" : "readWrite", "db" : "abc123" } ] 
}
>

查看当前使用数据库

> db
abc123
>

查看当前数据库中所有用户信息

> show users
{
 "_id" : "abc123.abc",
 "user" : "abc",
 "db" : "abc123",
 "roles" : [
 {
 "role" : "readWrite",
 "db" : "abc123"
 }
 ]
}
>

查看当前数据库状态统计信息

> db.stats()
{
 "db" : "abc123",
 "collections" : 0,
 "objects" : 0,
 "avgObjSize" : 0,
 "dataSize" : 0,
 "storageSize" : 0,
 "numExtents" : 0,
 "indexes" : 0,
 "indexSize" : 0,
 "fileSize" : 0,
 "dataFileVersion" : {

},
 "ok" : 1
}
>

删除当前数据库(删除数据库前,应先删除数据库中的所有用户)

> use abc123
switched to db abc123
> db.dropUser("abc")
true
> db.dropDatabase()
{ "dropped" : "abc123", "ok" : 1 }
>

> use admin
switched to db admin
> show dbs
admin 0.078GB
local 0.078GB
test (empty)
>

查看mongodb版本信息

> db.version()
2.6.11
>

查看当前服务器连接对象

> db.getMongo()
connection to 127.0.0.1
>

修复当前数据库

> db.repairDatabase()
{ "ok" : 1 }
>

数据库加锁,解锁,查看锁状态(适用于执行备份)

加锁

> use admin
switched to db admin
> db.runCommand({fsync:1,lock:1})
{
 "info" : "now locked against writes, use db.fsyncUnlock() to unlock",
 "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
 "ok" : 1
}
> db.currentOp()
{
 "inprog" : [ ],
 "fsyncLock" : true,
 "info" : "use db.fsyncUnlock() to terminate the fsync write/snapshot lock"
}
>

解锁

> db.$cmd.sys.unlock.findOne()
{ "ok" : 1, "info" : "unlock completed" }
> db.currentOp()
{ "inprog" : [ ] }
>

备份恢复

备份全库

[root@localhost ~]# mkdir backup
[root@localhost ~]# cd backup/
[root@localhost backup]# mongodump -u admin -p passwd
connected to: 127.0.0.1
2016-06-17T23:15:08.195+0800 all dbs
2016-06-17T23:15:08.195+0800 DATABASE: admin to dump/admin
2016-06-17T23:15:08.195+0800 admin.system.indexes to dump/admin/system.indexes.bson
2016-06-17T23:15:08.204+0800 3 documents
2016-06-17T23:15:08.204+0800 admin.system.users to dump/admin/system.users.bson
2016-06-17T23:15:08.204+0800 3 documents
2016-06-17T23:15:08.204+0800 Metadata for admin.system.users to 
dump/admin/system.users.metadata.json
2016-06-17T23:15:08.204+0800 admin.system.version to dump/admin/system.version.bson
2016-06-17T23:15:08.205+0800 1 documents
2016-06-17T23:15:08.205+0800 Metadata for admin.system.version to 
dump/admin/system.version.metadata.json
2016-06-17T23:15:08.205+0800 DATABASE: abc123 to dump/abc123
2016-06-17T23:15:08.218+0800 DATABASE: ssr to dump/ssr
[root@localhost backup]#

备份指定库

[root@localhost backup]# mongodump -u admin -p passwd -d abc123

恢复全库(进如备份目录)

[root@localhost backup]# mongorestore -u admin -p passwd --drop

恢复指定库(进入备份目录)

[root@localhost backup]# mongorestore -u admin -p passwd -d abc123 --drop

连接远程数据库命令参数和用法

mongo --username <username> --password <password> --host <host> --port 27017

mongo -u <username> -p <password> --host <host> --port 27017

mongo -u <username> -p <password> 192.168.2.222:27017/abc
6 月 162016
 

安装

[root@localhost ~]# yum install memcached

查看安装路径

[root@localhost ~]# rpm -lq memcached
/etc/rc.d/init.d/memcached
/etc/sysconfig/memcached
/usr/bin/memcached
/usr/bin/memcached-tool
/usr/share/doc/memcached-1.4.4
/usr/share/doc/memcached-1.4.4/AUTHORS
/usr/share/doc/memcached-1.4.4/CONTRIBUTORS
/usr/share/doc/memcached-1.4.4/COPYING
/usr/share/doc/memcached-1.4.4/ChangeLog
/usr/share/doc/memcached-1.4.4/NEWS
/usr/share/doc/memcached-1.4.4/README
/usr/share/doc/memcached-1.4.4/protocol.txt
/usr/share/doc/memcached-1.4.4/readme.txt
/usr/share/doc/memcached-1.4.4/threads.txt
/usr/share/man/man1/memcached.1.gz
/var/run/memcached
[root@localhost ~]#

启动服务

查看端口监听

查看默认配置

[root@localhost ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
[root@localhost ~]#

使用telnet登录验证服务

C:\Users\harveymei>telnet 192.168.2.44 11211
stats
STAT pid 1207
STAT uptime 47
STAT time 1466062672
STAT version 1.4.4
STAT pointer_size 64
STAT rusage_user 0.000000
STAT rusage_system 0.002999
STAT curr_connections 10
STAT total_connections 11
STAT connection_structures 11
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 7
STAT bytes_written 0
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT evictions 0
END
quit
遗失对主机的连接。
C:\Users\harveymei>

下载源码包

[root@localhost ~]# curl -O http://www.memcached.org/files/memcached-1.4.25.tar.gz

安装依赖包

[root@localhost ~]# yum install gcc libevent-devel

编译安装

[root@localhost ~]# tar xzf memcached-1.4.25.tar.gz
[root@localhost ~]# cd memcached-1.4.25
[root@localhost memcached-1.4.25]# ./configure --prefix=/usr/local/memcached
[root@localhost memcached-1.4.25]# make
[root@localhost memcached-1.4.25]# make install

启动服务

[root@localhost ~]# cd /usr/local/memcached/bin/
[root@localhost bin]# ./memcached -d -u nobody
[root@localhost bin]#

查看运行进程和端口监听
使用防火墙限定可以访问memcached服务的服务器源地址

iptables -I INPUT -p tcp -s 192.168.1.100 --dport 11211 -j ACCEPT
iptables -I INPUT -p udp -s 192.168.1.100 --dport 11211 -j ACCEPT

使用1.4.3或以上版本的memcached支持使用SASL进行登录验证,需要在编译时加入–enable-sasl参数。

6 月 152016
 

存储过程相关权限
create_routine
alter_routine
execute

视图相关权限
视图及存储过程用户权限的处理和检查

sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/ ' abc.sql > abc.new.sql
egrep -in "definer|set @@" abc.new.sql

导入存储过程时,应检查并修改为正确数据库用户

[root@localhost tmp]# egrep -in "definer|set @@" abc.new.sql
9253:CREATE DEFINER=`root`@`%` PROCEDURE `nextseq_proc`( )
9277:CREATE DEFINER=`root`@`%` PROCEDURE `setBidTimeForward`(IN p_bid LONG, IN p_months INT)
[root@localhost tmp]#

授予用户全局super权限

grant super on *.* to p2puser@localhost;

撤销用户全局super权限

update mysql.user set super_priv='N' where user='p2puser';

查询具有全局super权限的用户

SELECT user,host FROM mysql.user WHERE super_priv='Y';

查看全局用户权限设置

select * from mysql.user where user='p2puser';

select * from mysql.user\G;

查看数据库用户权限设置

select * from mysql.db where user='p2puser';

select * from mysql.db\G;

授权grant all权限明细

 Select_priv: Y
 Insert_priv: Y
 Update_priv: Y
 Delete_priv: Y
 Create_priv: Y
 Drop_priv: Y
 Grant_priv: N
 References_priv: Y
 Index_priv: Y
 Alter_priv: Y
 Create_tmp_table_priv: Y
 Lock_tables_priv: Y
 Create_view_priv: Y
 Show_view_priv: Y
 Create_routine_priv: Y
 Alter_routine_priv: Y
 Execute_priv: Y
 Event_priv: Y
 Trigger_priv: Y
6 月 142016
 

下载

[root@localhost ~]# curl -O http://mirrors.example.com/abc.tar.gz

登录验证并下载

[root@localhost ~]# curl -u username:password -O http://mirrors.example.com/abc.tar.gz

下载并重命名文件名称

[root@localhost ~]# curl -o 123.tgz http://mirrors.example.com/abc.tar.gz

断点续传下载(-C -)

[root@localhost ~]# curl -C - -O http://mirrors.example.com/abc.tar.gz

限速下载(默认单位B/s)

[root@localhost ~]# curl --limit-rate 128k -O http://mirrors.example.com/abc.tar.gz

请求头信息

[root@localhost ~]# curl -I 192.168.2.95:8080
 HTTP/1.1 200 OK
 Server: Apache-Coyote/1.1
 Content-Type: text/html;charset=ISO-8859-1
 Transfer-Encoding: chunked
 Date: Tue, 14 Jun 2016 02:26:26 GMT

[root@localhost ~]#
6 月 092016
 

1,安装JDK

visualvm-and-tomcat-jvm-01

[root@localhost ~]# yum install jdk-7u80-linux-x64.rpm


[root@localhost ~]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[root@localhost ~]#

2,运行Tomcat

[root@localhost ~]# tar xzf apache-tomcat-7.0.69.tar.gz
[root@localhost ~]# mv apache-tomcat-7.0.69 /usr/local/
[root@localhost ~]# cd /usr/local/apache-tomcat-7.0.69/bin/
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-7.0.69
Using CATALINA_HOME: /usr/local/apache-tomcat-7.0.69
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.69/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/apache-tomcat-7.0.69/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.69/bin/tomcat- 
juli.jar
Tomcat started.
[root@localhost bin]#

查看端口监听

visualvm-and-tomcat-jvm-02

访问页面

visualvm-and-tomcat-jvm-03
3,使用jstatd提供监控

新建一个安全策略配置文件
进入jstatd命令所在目录

visualvm-and-tomcat-jvm-04

root@localhost bin]# vi jstatd.all.policy
grant codebase "file:${java.home}/../lib/tools.jar" {
 permission java.security.AllPermission;
};

修改本机hosts主机名及IP对应关系

[root@localhost ~]# hostname -i
127.0.0.1 127.0.0.1
[root@localhost ~]#

修改

#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.95 localhost localhost.localdomain

再次确认

[root@localhost ~]# hostname -i
192.168.2.95
[root@localhost ~]#

启动jstatd服务
使用-p指定端口,默认TCP/1099
使用-J-Djava.rmi.server.logCalls=true开启日志
使用-J-Djava.rmi.server.hostname=192.168.2.95指定主机IP地址

[root@localhost ~]# cd /usr/java/jdk1.7.0_80/bin/
[root@localhost bin]# ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true -p 11099

内容引用:

Using Internal RMI Registry

This example demonstrates starting jstatd with an internal RMI registry. This example assumes that no other server is bound 
to the default RMI Registry port (port 1099).
jstatd -J-Djava.security.policy=all.policy

Enabling RMI logging capabilities.

This example demonstrates starting jstatd with RMI logging capabilities enabled. This technique is useful as a 
troubleshooting aid or for monitoring server activities.
jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true

-p portPort number where the RMI registry is expected to be found, or, if not found, created if -nr is not specified.

 

使用VisualVM连接jstatd主机

visualvm-and-tomcat-jvm-05

visualvm-and-tomcat-jvm-06 visualvm-and-tomcat-jvm-07
4,使用jmx提供监控

修改catalina.sh并重启tomcat服务

XMX和XMS设置值相同,MaxPermSize和MinPermSize设置值相同,可以避免伸缩堆内存大小带来的应用程序暂停,使用户访问Web或Application时获得流畅的体验。

[root@localhost ~]# cd /usr/local/apache-tomcat-7.0.69/bin/
[root@localhost bin]# vi catalina.sh

JAVA_OPTS="-Xms256m -Xmx256m -XX:PermSize=128m -XX:MaxPermSize=128m"

CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.2.95
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8081
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

重启tomcat并确认端口监听

[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-7.0.69
Using CATALINA_HOME: /usr/local/apache-tomcat-7.0.69
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.69/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/apache-tomcat-7.0.69/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.69/bin/tomcat- 
juli.jar
Tomcat started.
[root@localhost bin]# netstat -ltn |grep 8081
tcp 0 0 :::8081 :::* LISTEN
[root@localhost bin]#

使用VisualVM连接jstatd主机

visualvm-and-tomcat-jvm-08

visualvm-and-tomcat-jvm-09 visualvm-and-tomcat-jvm-10