2009年4月27日 星期一

MYSQL 簡易管理者常用語法整理

在 Linux 裡面 很多的應用程式都是使用 mysql 大部分的 SQL 語法都幾乎一樣 只是有些系統操作面的指令不同而已 這裡整理一些比較常用的系統管理指令


A : 修改帳號密碼

修改帳號密碼有兩個方法

1. 使用 mysqladmin
2. 利用 mysql 指令去修改

1. 使用 mysqladmin

若是剛安裝完成 mysql 其初始 root 是沒有設定密碼 , 為了安全必須更改密碼
(註 mysql 的 root 跟 系統的 root 是不同的個體)

語法如下所示 :
mysqladmin password "new-password"
mysqladmin -u root password "new-password"
mysqladmin -u root -h localhost password "new-password"

如下圖所示:



若是要修改原有的密碼 , 其語法如下 :
mysqladmin -u root -p password "new-password"

畫面會出現 : enter password : 這時候鍵入舊密碼 , 這樣即可修改密碼

如下圖所示 :


2. 使用sql指令修改密碼 :

USER的密碼是放在名為 mysql 資料庫的 USER 這 TABLE 裏面 , 所以直接去修改資料即可.

指令如下 :
shell>mysql -u root mysql
shell>update user set password=password('new_password') where user='root';
shell>flush privileges;

可以用這指令查詢是否有密碼
select password from user where user='root';

整個執行步驟如下圖所示 :

沒有密碼的範例 :

有密碼的範例 : (密碼以編碼過)



B : 登入MYSQL

指令 :
shell>mysql -u root -h localhost -p XXX..

參數 :
-u <使用者帳號>
-p <使用者密碼>
後面也可以直接打上密碼登入 , 不過若有旁人 , 在因為是明碼 比較有風險, 不建議加上密碼
沒加上密碼按 enter 後 會出現 enter password: 這時候打入密碼是隱藏字元 比較安全
-h <資料庫主機名稱> 若打上主機名稱要能解析

XXX.. <資料庫名稱> 可以直接開啟資料庫 , 此參數可加可不加


C : 顯示全部的資料庫

指令 :
mysql>show databases;

如下圖示 :



D : 使用資料庫跟顯示資料庫裡面的TABLE

指令:
使用資料庫
mysql>user <資料庫名稱>
顯示資料庫裡面的 TABLE
mysql>show tables;

如下圖所示 :


E : 查詢TABLE裏面各欄位的資訊

指令:
顯示TABEL各欄位的資訊
mysql> desc <資料庫名稱>
如下圖所示 :




F : 查詢目前mysql的版本及建立日期

指令:
查詢mysql版本:
mysql>select version();
查詢mysql建立日期:
mysql>select current_date;

如下圖所示:


G : 顯示目前是用哪一個使用者名稱登入

指令:
mysql>select user();

如下圖示:




H : 建立新的資料庫及刪除資料庫

指令 :
建立資料庫
mysql>create database <資料庫名稱>;
刪除資料庫
mysql>drop database <資料庫名稱>;

如下圖所示 :


2009年4月16日 星期四

CISCO Route 設定 : Clock 篇

設定 CISCO Clock 步驟 :

首先 telnet 到 route 然後到 privileged mode

指令 : clock set (hh:mm:ss) (day) (month) (Year)

整個設定步驟如下圖 :



查詢目前 route 的 clock


指令 : show clock


執行如下圖 :


2009年4月13日 星期一

chkconfig 設定 預設服務說明

每次安裝完 redhat 後 總會到 chkconfig 把沒用到的服務關掉
有些預設的服務大多數是沒用到

有些服務不是很了解它的用途 也沒仔細去查
有天在這網頁看到有人詳細列表 就把它摘錄 很有參考價值

可以依照自己需求 開關這些服務

原文出處 :
http://www.weithenn.idv.tw/cgi-bin/wiki.pl/CentOS_5.1-%e5%88%9d%e5%a7%8b%e7%92%b0%e5%a2%83%e8%a8%ad%e5%ae%9a



預設開啟服務 說明 :
================================================================
acpid : Advanced Configuration and Power Interface 電源進階設定常用在 Laptop 上
apmd : Adventage Power Management daemon 偵測系統的電池電量常用在 Laptop 上
atd : /etc/at.allow,/etc/at.deny 我大概都使用 crond 來達成
autofs : 自動掛載檔案系統與週邊裝置 (如光碟、USB),常用在 Laptop 上
avahi-daemon : 當區網沒有 DNS 服務時會試著尋找提供 zeroconf 協定的主機
bluetooth : Bluetooth 藍芽驅動,常用在 Laptop 上
cpuspeed : 控制 CPU 速度主要用來省電,常用在 Laptop 上
cups : Common UNIX Printing System 使系統支援印表機
firstboot : 安裝完成後第一次啟動時的服務,設定 auth、firewall、keyboard...
gpm : 記錄週邊裝置的檔案資料,例如文字模式下可使用滑鼠
haldaemon : 使系統支援 plug and play 裝置
hidd : 使系統支援藍芽裝置,例如滑鼠,鍵盤
hplip : 使系統支援 HP 相關型號印表機
ip6tables : 使系統支援 IPTables Filrewall IPv6
isdn : 使系統支援 Integrated Services Digital Network (ISDN) 環境
lm_sensors : 使系統支援偵測主機版或硬體,常用在 Laptop 上
messagebus : 使系統支援 plug and play 裝置
nfslock : 使系統支援 NFS Server 資料一致性功能
pcscd : 使系統支援 Smart Card
portmap : 使系統支援 NFS Service
rpcgssd : 使系統支援 NFSv4 Service
rpcidmapd : 使系統支援 NFSv4 Service
yum-updatesd : 使系統支援 YUM 自動更新服務
anacron : 執行在 crontab 設定的時間沒有執行到的工作
auditd : 稽核系統 /var/log/audit/audit.log,若 auditd 未執行中則稽核訊息會
寫入 /var/log/messages (配合 SELinux)
iptables : 使系統支援 IPTables Filrewall
irqbalance : 使系統支援多個 CPU 環境當系統中斷請求時進行負載平衡的程序,
所以單 CPU 的機器就不需要
lvm2-monitor : 使系統支援 Logical Volume Manager 邏輯磁區
mcstrans : 主要用於配合 SELinux 服務
mdmonitor : 使系統支援 RAID 相關程序
microcode_ctl : 使系統支援 Intel IA32 CPU 特色,所以 AMD CPU 不需要
netfs : Network File System Mounter 網路掛載系統 (如 NFS、Samba、NCP)
restorecond : 使系統支援 SELinux 監控檔案狀態
smartd : 使系統支援檢查硬碟狀態 (Hardware RAID 要改設定檔)
sendmail : 使系統支援 Sendmail
xfs : 使系統支援 X Window 字型
crond : /etc/cron.* 排程服務
kudzu : 使系統每次開機會都自動執行硬體偵測
network : 使系統支援網卡
readahead_early : 使系統再啟動時預先將相關檔案讀到記憶體內來加快啟動速度
sshd : 使系統支援 SSH Service
syslog : 使系統支援 System Log Service

2009年4月2日 星期四

在 Oracle 下查詢 LOCK 的 USER

常常被程式師要求查詢誰在LOCK TABLE
之前每次要用到都去查書
這一次就把它記下來 下次直接拿來用就好

在 oracle 有提供一個 VIEW 可以查詢 V$LOCKED_OBJECT

各欄位說明 :
============================
XIDUSN 回覆區段編號
XIDSLOT 插槽編號
XIDSQN 序號
OBJECT_ID 被鎖定物件編號
SESSION_ID SESSION 編號
ORACLE_USERNAME ORACLE的使用者
OS_USER_NAME 作業系統的使用者
PROCESS 作業系統的行程代碼
LOCKED_MODE 鎖定模式

這麼多欄位 我只用到 SESSION_ID , ORACLE_USERNAME , OS_USER_NAME

SQL 語法如下 :

SELECT SESSION_ID,ORACLE_USERNAME,OS_USER_NAME FROM V$LOCKED_OBJECT

對照 對方給你的 ORACLE_USERNAME 及 OS_USER_NAME 查到 SESSION_ID
在把它 KILL PROCESS 就可以 UNLOCK

跟大家分享

2009年1月10日 星期六

CISCO Switch 如何控管 PORT 防私接 HUB 之密技

當網管的有時候好像 007 , 調查局 , 要時時維護網路的暢通和監控網路上各種狀況
免得 USER 一些有意或無意的行為導致整個企業網路損壞 , 其中對於 switch 連接到各 user
最容易被偷偷接未授權的 HUB (switch) 最常發生 .

以前都是用道德勸說 , 或不定時檢查實體網路 . 這樣往往無法得到預期的結果
如何控管 SWITCH PORT 不被 USER 私自接上 HUB (switch) , 能自動偵測 , 一有發現立刻
disable port , 這樣不是很完美 ..

本案例是使用 CISCO SWITCH

telnet 到 switch

cisco > enable
Password: .....
cisco# config
Configuring from terminal, memory, or network [terminal] ?
Enter configuration commands, one per line. End with CNTL/z.

cisco (config)# interface fastEthernet 0/xx
cisco (config-if)#switchport mode access
cisco (config-if)#switchport port-security

按 ctrl /z 離開

<< 最後記得 wr m 存起來 , 免得重開設定又恢復原狀 >>



可以用 show port-security interface fastEthernet 0/xx 查看設定是否有成功

設定前 , 如下圖所示 :




設定後 , 如下圖所示 :




當 switch 偵測到 port 有私接 HUB(switch) 立刻 disable port
如下圖所示 : (紅色圈圈處)

2008年12月26日 星期五

MailScanner 的好幫手 MailWatch

MailScanner 在處理垃圾郵件和病毒信件時 它的紀錄都是文字檔 , 紀錄詳細每封信件的處理過程 . 文字敘述的紀錄檔 當累積大量的資訊時就很難判讀

MailWatch 就是 MailScanner 的好搭檔 , 它把 MailScanner 的紀錄轉換成WEB 可以很清楚的辨別每一封來信的狀況 , 非常容易判讀 . 如下圖 :


(圖片來源 : 官方網站 http://mailwatch.sourceforge.net/)


它可以看每封信件的判斷狀況 , 讓您更加清楚知道判斷依據 如下圖 :


(圖片來源 : 官方網站 http://mailwatch.sourceforge.net/)


安裝步驟 :

1 : 先前須檢查是否有安裝 Apache , MySQL 及 PHP , PHP-gd , PHP-pear , PHP-mysql , PHP-devel 及相關元件

指令 : rpm -qa httpd , rpm -qa php* , rpm -qa mysql



結果如下圖 :


2 : 確認及設定 開機啟動 MySQL , httpd 服務

設定開機啟動服務 :

chkconfig http on
chkconfig mysqld on

查看是否有啟動服務 :


ps -ef grep mysql
ps -ef grep httpd

有啟動服務 , 如下圖 :



若無 則啟動服務

service mysql start
service httpd start


3 : 若第一次使用 mysql 記得用下列指令變更密碼

/usr/bin/mysqladmin -u root password 'XXXXXX'


4 : 設定 php.ini

vi /etc/php.ini

修改下列參數

short_open_tag = on
safe_mode = off
register_globals = off
magic_quotes_gpc = on
magic_quotes_runtime = off
session.auto_start = 0


5 : 下載 及安裝 MailWatch

下載點 : 官網
下載點 : http://sourceforge.net/project/showfiles.php?group_id=87163

安裝 MailWatch

tar -zxvf mailwatch-x.x.x.tar.gz


6 : 建立 MailWatch 資料庫

以下指令必須使用 root 登入

cd mailwatch-x.x.x
mysql -p <>


7 : 修改 MailWatch.pm 檔案 , 並複製到別的目錄

vi MailWatch.pm

my($db_name) = 'mailscanner'; (資料庫名稱)
my($db_host) = 'localhost'; (資料庫位置)
my($db_user) = 'root'; (使用者帳號)
my($db_pass) = 'xxxxx...'; (使用者密碼)

cp MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions/


8 : 新增 mailwatch 網頁的使用者

mysql mailscanner -u root -p
Enter password : xxxxxx

mysql > insert into user values ('root',md5('xxxxx'),'root','A','0','0','0','0','0');


9 : 安裝 和 設定 MailWatch

在之前解壓縮之後產生的目錄裡有一個子目錄 , 名稱為 mailscanner


mv mailscanner /var/www/html

修改目錄權限

cd /var/www/html/mailscanner
chown root:apache images
chmod ug+rwx images
chown root:apache images/cache
chmod ug+rwx images/cache


10 : 修改 conf.php 設定

cd /var/www/html/mailscanner
cp conf.php.example conf.php

vi conf.php

define(DB_TYPE , 'mysql');
define(DB_USER, 'root');
define(DB_PASS, 'XXXXX');
define(DB_HOST, 'localhost');
define(DB_NAME, 'mailscanner');


11 : 修改 MailScanner 設定

先暫停 MailScanner

service MailScanner stop

vi /etc/MailScanner/MailScanner.conf

Quarantine User = root
Quarantine Group = apache
Quarantine Permissions = 0660
Quarantine Whole Message = yes
Quarantine Whole Message As Queue Files = no
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes
Always Looked Up Last = &MailWatchLogging


11 : 整合 黑名單和白名單

在 MailWatch 也可以設定黑白名單
把之前解壓縮的目錄裡的檔案 SQLBlackWhiteList.pm 複製一份到 /usr/lib/MailScanner/MailScanner/CustomFunctions

vi SQLBlackWhiteList.pm

my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'root';
my($db_pass) = 'xxxxx';

vi /etc/MailScanner/MailScanner.conf

Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist


12 : 修改 MailScanner 目錄下的 spam.assassin.prefs.conf

vi /etc/MailScanner/spam.assassin.prefs.conf

加入下列兩行

bayes_path /etc/MailScanner/bayes/bayes
bayes_file_mode 0660


13 : 建立 bayes 新目錄 , 並把原有 spamassassin 資料庫複製過來

mkdir /etc/MailScanner/bayeschown root:apache /etc/Mailscanner/bayes
chmod g+rws /etc/MailScanner/bayes
cp /root/.spamassasin/bayes_* /etc/MailScanner/bayes
chown root:apache /etc/MailScanner/bayes/bayes_*
chmod g+rws /etc/MailScanner/bayes/bayes_*


14 : 測試 spam.assassin.prefs.conf

spamassassin -D -p /etc/MailScanner/spam.assassin.prefs.conf --lint


15 : 重新啟動 MailScanner

service MailScanner restart && tail -f /var/log/maillog

若看到如下圖的訊息
裡面有一行:

Config: calling custom init function MailWatchLogging

表示安裝成功




可以在瀏覽器網址打 http://xxx.xxxx.xxx/mailscanner

輸入帳號密碼即可看到漂亮的報表


最後 隨著時間的增加 記錄也會不斷的增加 , 可以用下列的 SQL 指令來刪除過期的資料

delete from maillog where date < 'xxxx(年)-xx(月)-xx(日)';










2008年12月3日 星期三

Change redo log file size

註 : 本範例為 oracle 8.1.7.0


前言 :

在安裝好 oracle redo log file 都沒去變更過 都是建資料庫時的內定值
最近發先資料庫效能有問題所以才想到去變動這些設定檔
首先變更 init.ora 裡面的 log_buffer 的內定值 原本的值為 32768 = 32K 太小
導致常常會做寫入動作 , 首先先改這參數 , 至於要多大就看各環境而定。


1. 建立新的 redo log file :

redo log file 自從建立資料庫後就一直使用內定值沒變動過 , 內定值及數量如下圖 :



這一次要調整為一樣有 3個 group , 但是每個 group 有2個member,
其目的為容錯之用 , 並加大每個redolog file 至 10M.

建立新的 REDO LOG GROUP的語法 :
alter database add logfile group X ('/$oracle_HOME/datafilename ') size XXM
如下圖 :






2. Drop 舊有的 redo log file :

檢查現有的 redo log file 狀態 , 若是 inactive 才可以drop

語法 : select * from v$log;

在 STATUS 的欄位,各種值的說明如下:

CURRENT :  目前正在寫入的群組。
ACTIVE :      Checkpoint 正在進行中,寫入 datafile,尚未完成。
INACTIVE :  Checkpoint 已經完成。資料可以覆蓋。
CLEANING : 日誌正被清除內容但尚未完成。
UNUSED :      尚未被使用過或已經被清除完成。


清除  redo log file 語法 :
alter database drop logfile group X;

如下圖 :



若要移除的 redo log 目前的狀態是 active , 可以用下面指令切換到
下一個 redo log file 使其狀態由 active 變成 inactive

alter system switch logfile;
alter system checkpoint;

當已經都 drop 掉舊有的 redo log file 後 , 在 8.1.7.0版本 在 OS 裡面
檔案還是存在 , 這時才可以到檔案管理員去 delete file .