mysql常用的show命令

01、show tables或show tables from database_name; ― 显示当前数据库中所有表的名称
02、show databases; ― 显示mysql中所有数据库的名称
03、show columns from table_name from database_name; 或show columns from database_name.table_name; ― 显示表中列名称
04、show grants for user_name; ― 显示一个用户的权限,显示结果类似于grant 命令
05、show index from table_name; ― 显示表的索引
06、show status; ― 显示一些系统特定资源的信息,例如,正在运行的线程数量
07、show variables; ― 显示系统变量的名称和值
08、show processlist; ― 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
09、show table status; ― 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间
10、show privileges; ― 显示服务器所支持的不同权限
11、show create database database_name; ― 显示create database 语句是否能够创建指定的数据库
12、show create table table_name; ― 显示create database 语句是否能够创建指定的数据库
13、show engies; ― 显示安装以后可用的存储引擎和默认引擎。
14、show innodb status; ― 显示innoDB存储引擎的状态
15、show logs; ― 显示BDB存储引擎的日志
16、show warnings; ― 显示最后一个执行的语句所产生的错误、警告和通知
17、show errors; ― 只显示最后一个执行语句所产生的错误
18、show [storage] engines;

自动选择ip脚本一枚

在公司。接网线。用192.168.1.0段的ip。在家用无线。使用不同的脚本切换ip。。费劲死。。所以写出脚本一枚。在网卡有连接时。就认为是在公司。。无连接时。就认为、是在家。。用无线

#!/bin/bash
ETH0=”192.168.1.123″
ETH00=”192.168.10.123″
ETH0GW=”192.168.1.1″
WLAN=”192.168.100.125″
WLANGW=”192.168.100.1″

function iseth0link {
ret=$?
echo $ret
return $ret
}
function OFFICEIP {
ifconfig eth0 down
ifconfig eth0 ${ETH0} netmask 255.255.255.0 up
ifconfig eth0:0 ${ETH00} netmask 255.255.255.0 up
route del default gw 0.0.0.0 2>/dev/null
route add default gw ${ETH0GW}
}
function HOMEIP {
ifconfig wlan0 down
iwconfig wlan0 mode managed
ifconfig eth0 ${ETH0} netmask 255.255.255.0 up
ifconfig eth0:0 ${ETH00} netmask 255.255.255.0 up
ifconfig wlan0 192.168.100.123 netmask 255.255.255.0 up
iwconfig wlan0 essid ‘hackers365′
route del default gw 0.0.0.0 2>/dev/null
route add default gw 192.168.100.1
}

ifconfig wlan0 down
echo “nameserver 202.106.0.20″ >> /etc/resolve.conf
mii-tool 2>/dev/null|grep ‘link ok’ > /dev/null
if [ $? -eq 0 ];then
OFFICEIP
else
HOMEIP
fi

nginx upload progress

需要使用nginx progress模块来实现进度条功能。。。

1. nginx upload模块

使用此模块可以先让nginx来接收上传的文件。然后nginx再来踹后边的php一脚。给你接收好了。你来处理吧。。。节省php进程资源。如果不使用此模块。将会一直占用php资源。。。。

此模块只能使用RFC1867 标准的multipart/form-data编码

2. nginx upload progress模块

此模块可以与upload模块一起使用。或单独使用。。。这个模块监听multipart/form-data编码的数据流。在POST的时候需要带一个

X-Progress-ID=XXXXX的参数。其中XXXXX为一个uuid。需要全局惟一。然后GET此模块的地址时需要带上此uuid

 

#upload progress
upload_progress weibo_img 1m;
upload_progress_json_output;   #使用json格式output

server {
listen 80;
server_name test.jingbo.cn;
access_log logs/test.jingbo.cn.log;
error_log logs/error.test.jingbo.cn.log debug;
root /data/php/htdocs;

location / {
root /data/rcSystem/php/htdocs;
index index.php index.html index.htm;
}

location = /upload {
upload_pass @test;
upload_store /tmp/upload 1;
upload_state_store /tmp/state 1;
upload_store_access user:r;

upload_set_form_field $upload_field_name.name” “$upload_file_name”;
upload_set_form_field $upload_field_name.content_type” “$upload_content_type”;
upload_set_form_field $upload_field_name.path” “$upload_tmp_path”;

upload_aggregate_form_field “$upload_field_name.md5″ “$upload_file_md5″;
upload_aggregate_form_field “$upload_field_name.size” “$upload_file_size”;

upload_pass_form_field “submit”;
upload_pass_form_field “description”;

#limit rate
upload_limit_rate 10k;

#progress
track_uploads weibo_img 30s;
}

location @test {
  rewrite ^/upload /test/ajaxnginx/doajaxfileupload.php;    #重写一个规则,使之rewrite到处理的php文件
proxy_pass http://test.jingbo.cn;
}

location ^~ /progress {
# report uploads tracked in the ‘proxied’ zone
  report_uploads weibo_img;    #GET此地址得到上传进度
}

location ~ .php$ {
root /data/rcSystem/php/htdocs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE “include_path=/data/rcSystem/php/include:/usr/share/pear”;
include fastcgi_params;
}
}

nginx server push module

新浪的新版微博。把私信功能做成了在线聊天的形式。记得很早以前人人就实现了网页形式的在线聊天。。百度。google了一下。用到了服务器推的技术。server直接push信息到client.js得到信息画到网页中。然后继续去请求下个消息。下午测试成功。。

nginx server push module地址:

http://pushmodule.slact.net/

对作者表示衷心的感谢。。

nginx版本0.8.55

wget http://nginx.org/download/nginx-0.8.55.tar.gz

wget http://pushmodule.slact.net/downloads/nginx_http_push_module-0.692.tar.gz

tar zxvf nginx-0.8.55.tar.gz

tar zxvf nginx_http_push_module-0.692.tar.gz

cd nginx-0.8.55

./configure –prefix=/usr/local/nginx0.8.55/ –with-poll_module –with-http_ssl_module –with-http_stub_status_module –add-module=../nginx_http_push_module-0.692

配置

    location = /active {
        push_subscriber;
        set $push_channel_id $arg_id;
        push_subscriber_concurrency broadcast;
        default_type text/plain;
    }

    location = /publish {
        push_publisher;
        set $push_channel_id $arg_id;
        push_delete_oldest_received_message on;
        push_min_message_buffer_length 0;
        push_max_message_buffer_length 100;
#        push_store_messages off;
    }

1. 通过惟一的id来标识每个channel

2. /active用于get消息。/publish用来post消息

3. 上面的配置将会删除已get过的message,最小的buffer为0,最大存储100个message

测试:

curl http://localhost/active?id=1000

将会阻塞

curl -d ‘hacker’ http://localhost/publish?id=1000

阻塞的curl将会返回’hacker’

 

<div id=”data”></div>
<script src=”/js/jquery.min.js”></script>
<script>
   function listen(last_modified, etag) {
       $.ajax({
           ‘beforeSend': function(xhr) {
               xhr.setRequestHeader(“If-None-Match”, etag);
               xhr.setRequestHeader(“If-Modified-Since”, last_modified);
           },
           url: ‘/active?id=hacker’,
           dataType: ‘text’,
           type: ‘get’,
           cache: ‘false’,
           success: function(data, textStatus, xhr) {
               etag = xhr.getResponseHeader(‘Etag’);
               last_modified = xhr.getResponseHeader(‘Last-Modified’);

               div = $(‘<div class=”msg”>’).text(data);
               info = $(‘<div class=”info”>’).text(‘Last-Modified: ‘ + last_modified + ‘ | Etag: ‘ + etag);

               $(‘#data’).prepend(div);
               $(‘#data’).prepend(info);

               /* Start the next long poll. */
               listen(last_modified, etag);
           },
           error: function(xhr, textStatus, errorThrown) {
               $(‘#data’).prepend(textStatus + ‘ | ‘ + errorThrown);
           }
       });
   };

   $(document).ready(function() {
       setTimeout(function() {
           listen(‘Thu, 1 Jan 1970 00:00:00 GMT’, ‘0’);
       }, 500);
   });
</script>