總結mysql
1.權限管理-----------linux
@1.用戶權限管理ios
chown : 設置用戶屬組屬主nginx
chown 屬主:屬組web
chown :屬組 文件sql
chgrp :設置用戶屬組shell
chgrp 屬組 文件數據庫
@2.文件權限管理vim
chmod命令用來改變許可權限。讀取、寫入和執行是許可權限中的三個主要設置。瀏覽器
chmod: 設置文件的讀、寫、執行
r—文件能夠被讀取 w—文件能夠被寫入 x—文件能夠被執行,若是文件是程序的話
可使用帶有-l的ls命令來仔細查看一個文件的許多細節。
chmod命令用來設定文件的權限。標準用法:
chmod 文件的使用者(u,g,o,a)增減(+,-,=)權限名稱(r,w,x) 文件
文件的使用者說明權限說明增減說明 u 擁有文件的用戶r讀取權+添加權限 g全部者所在的組羣 w寫入權 -刪除權限 o其餘人x執行權=是它稱爲惟一權限 a所有(u,g和o)
刪除某一文件的全部權限,輸入命令:
chmod a-rwx test.txt
爲文件全部者添加權限,輸入命令:
chmod u+rwx test
還能夠用數字表示權限:4——讀取,2——寫入,1——執行。下面的兩個命令等價:
chmod 751 filename chmod u+rwx,g=rx,0=x filename
@3.防火牆:iptables
防火牆策略 規則
你可使用以下命令來查看 IPtables 防火牆策略FILTER 表:
iptables -L -n -v
若是你發佈有某個 IP 向服務器導入攻擊或非正常流量,可使用以下規則屏蔽其 IP 地址: iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
注意須要將上述的 XXX 改爲要屏蔽的實際 IP 地址,其中的 -A 參數表示在 INPUT 鏈的最後追加本條規則。(IPTables 中的規則是從上到下匹配的,一旦匹配成功就再也不繼續往下匹配)
若是你只想屏蔽 TCP 流量,可使用 -p 參數的指定協議,例如: iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP
解封某個IP地址
要解封對 IP 地址的屏蔽,可使用以下命令進行刪除: iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP
其中 -D 參數表示從鏈中刪除一條或多條規則。
使用IPtables關閉特定端口
不少時候,咱們須要阻止某個特定端口的網絡鏈接,可使用 IPtables 關閉特定端口。
阻止特定的傳出鏈接: iptables -A OUTPUT -p tcp --dport xxx -j DROP
阻止特定的傳入鏈接: iptables -A INPUT -p tcp --dport xxx -j ACCEPT
使用Multiport控制多端口
使用 multiport 咱們能夠一次性在單條規則中寫入多個端口,例如: iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT
在規則中使用 IP 地址範圍
在 IPtables 中 IP 地址範圍是能夠直接使用 CIDR 進行表示的,例如: iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT
配置端口轉發
有時咱們須要將 Linux 服務器的某個服務流量轉發到另外一端口,此時可使用以下命令: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525
上述命令會將全部到達 eth0 網卡 25 端口的流量重定向轉發到 2525 端口。
屏蔽HTTP服務Flood攻擊
有時會有用戶在某個服務,例如 HTTP 80 上發起大量鏈接請求,此時咱們能夠啓用以下規則: iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT
上述命令會將鏈接限制到每分鐘 100 個,上限設定爲 200。
禁止PING
對 Linux 禁 PING 可使用以下規則屏蔽 ICMP 傳入鏈接: iptables -A INPUT -p icmp -i eth0 -j DROP
容許訪問迴環網卡
環回訪問(127.0.0.1)是比較重要的,建議你們都開放: iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
屏蔽指定MAC地址
使用以下規則能夠屏蔽指定的 MAC 地址: iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP
限制併發鏈接數
若是你不但願來自特定端口的過多併發鏈接,可使用以下規則: iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
@4.setenforce 0服務都是以普通用戶啓動的
@5.服務權限-----全部的
2. 網絡管理
@1.ip地址管理
增刪改查命令
使用ifconfig命令配置並查看網絡接口狀況
ifconfig:查看linux ip地址
ifconfig -a
@2.路由管理
使用route 命令配置路由
增刪改查
表示例1:添加到主機路由# route add –host 192.168.4.2 dev eth0:1# route add –host 192.168.4.1 gw 192.168.4.250
2 ip address delete–刪除一個協議地址. 縮寫:delete、del、d# ip addr del 192.168.4.1/24 brd + dev eth0 label eth0:Alias1
5.3 ip address show–顯示協議地址. 縮寫:show、list、lst、sh、ls、l# ip addr ls eth0
5.4.ip address flush–清除協議地址. 縮寫:flush、f示例1 : 刪除屬於私網10.0.0.0/8的全部地址:# ip -s -s a f to 10/8示例2 : 取消全部以太網卡的IP地址# ip -4 addr flush label 「eth0″—————————
@3.NDS 查看驗證域名是否解析成功
ping命令。第一行會返回域名及解析的ip
host命令。會返回域名has ip 地址。
nslookup命令。輸入命令後回車,在命令提示符輸入域名,回車,就會顯示域名的ip地址。
dig命令。會顯示a記錄即域名的解析。
dig命令能夠trace解析過程,先訪問13臺根域root(.)服務器,其中一臺根域服務器返回一級域名服務器(本例是.com.)的ip地址,一級服務器再返回二級域名服務器ip地址(本例 .baidu.com.)...... dig命令的其餘參數,能夠查看help。
@4.網卡管理
ifup ifdown
ifdown和ifup命令和運行ifconfig up,ifconfig down的功能同樣。給定網絡接口的名字能夠只禁用或啓用這一個接口。須要root權限,因此在Ubuntu上須要使用sudo來運行。
netstat -s則顯示全部端口的詳細統計信息。
3.管理本地資源命令
@1.內存 查看命令
2)硬盤
3)cpu
4)進程
5)內核
top:
主要參數
d:指定更新的間隔,以秒計算。
q:沒有任何延遲的更新。若是使用者有超級用戶,則top命令將會以最高的優先序執行。
c:顯示進程完整的路徑與名稱。
S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。
s:安全模式。
i:不顯示任何閒置(Idle)或無用(Zombie)的行程。
n:顯示更新的次數,完成後將會退出to
顯示參數:
PID(Process ID):進程標示號。
USER:進程全部者的用戶名。
PR:進程的優先級別。
NI:進程的優先級別數值。
VIRT:進程佔用的虛擬內存值。
RES:進程佔用的物理內存值。
SHR:進程使用的共享內存值。
S:進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值是負數。
%CPU:該進程佔用的CPU使用率。
%MEM:該進程佔用的物理內存和總內存的百分比。
TIME+:該進程啓動後佔用的總的CPU時間。
Command:進程啓動的啓動命令名稱,若是這一行顯示不下,進程會有一個完整的命令行。
top命令使用過程當中,還可使用一些交互的命令來完成其它參數的功能。這些命令是經過快捷鍵啓動的。
<空格>:馬上刷新。
P:根據CPU使用大小進行排序。
T:根據時間、累計時間排序。
q:退出top命令。
m:切換顯示內存信息。
t:切換顯示進程和CPU狀態信息。
c:切換顯示命令名稱和完整命令行。
M:根據使用內存大小進行排序。
W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
free
1.做用
free命令用來顯示內存的使用狀況,使用權限是全部用戶。
2.格式
free [-b-k-m] [-o] [-s delay] [-t] [-V]
3.主要參數
-b -k -m:分別以字節(KB、MB)爲單位顯示內存使用狀況。
-s delay:顯示每隔多少秒數來顯示一次內存使用狀況。
-t:顯示內存總和列。
-o:不顯示緩衝區調節列。
uptime
18:59:15 up 25 min, 2 users, load average: 1.23, 1.32, 1.21
如今的時間
系統開機運轉到如今通過的時間
連線的使用者數量
最近一分鐘,五分鐘和十五分鐘的系統負載
參數: -V 顯示版本資訊。
vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 1 24980 10792 8296 47316 5 19 205 52 1161 698 26 3 1 70
1 觀察磁盤活動狀況
磁盤活動狀況主要從如下幾個指標瞭解:
bi:表示從磁盤每秒讀取的塊數(blocks/s)。數字越大,表示讀磁盤的活動越多。
bo:表示每秒寫到磁盤的塊數(blocks/s)。數字越大,表示寫磁盤的活動越多。
wa:cpu等待磁盤I/O(未決的磁盤IO)的時間比例。數字越大,表示文件系統活動阻礙cpu的狀況越嚴重,由於cpu在等待慢速的磁盤系統提供數據。wa爲0是最理想的。若是wa常常大於10,可能文件系統就須要進行性能調整了。
2 觀察cpu活動狀況
vmstat比top更能反映出cpu的使用狀況:
us:用戶程序使用cpu的時間比例。這個數字越大,表示用戶進程越繁忙。
sy: 系統調用使用cpu的時間比例。注意,NFS因爲是在內核裏面運行的,因此NFS活動所佔用的cpu時間反映在sy裏面。這個數字常常很大的話,就須要注 意是否某個內核進程,好比NFS任務比較繁重。若是us和sy同時都比較大的話,就須要考慮將某些用戶程序分離到另外的服務器上面,以避免互相影響。
id:cpu空閒的時間比例。
wa:cpu等待未決的磁盤IO的時間比例。
iostat
用於統計CPU的使用狀況及tty設備、硬盤和CD-ROM的I/0量
參數:
-c 只顯示CPU行
-d 顯示磁盤行
-k 以千字節爲單位顯示磁盤輸出
-t 在輸出中包括時間戳
-x 在輸出中包括擴展的磁盤指標
avg-cpu: %user %nice %sys %iowait %idle
20.25 0.18 2.61 76.39 0.57
%iowait 等待本地I/O時CPU空閒時間的百分比
%idle 未等待本地I/O時CPU空閒時間的百分比
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
hda 9.86 284.34 84.48 685407 2036
每秒傳輸數(tps)、每秒512字節塊讀取數(Blk_read/s)、每秒512字節塊寫入數(Blk_wrtn/s)和512字節塊讀取(Blk_read)和寫入(Blk_wrtn)的總數量。
系統
# uname -a # 查看內核/操做系統/CPU信息
# head -n 1 /etc/issue # 查看操做系統版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看計算機名
# lspci -tv # 列出全部PCI設備
# lsusb -tv # 列出全部USB設備
# lsmod # 列出加載的內核模塊
# env # 查看環境變量
資源
# free -m # 查看內存使用量和交換區使用量
# df -h # 查看各分區使用狀況
# du -sh # 查看指定目錄的大小
# grep MemTotal /proc/meminfo # 查看內存總量
# grep MemFree /proc/meminfo # 查看空閒內存量
# uptime # 查看系統運行時間、用戶數、負載
# cat /proc/loadavg # 查看系統負載
磁盤和分區
# mount | column -t # 查看掛接的分區狀態
# fdisk -l # 查看全部分區
# swapon -s # 查看全部交換分區
# hdparm -i /dev/hda # 查看磁盤參數(僅適用於IDE設備)
# dmesg | grep IDE # 查看啓動時IDE設備檢
# ps -ef # 查看全部進程
# top # 實時顯示進程狀態
服務
# chkconfig --list # 列出全部系統服務
# chkconfig --list | grep on # 列出全部啓動的系統服務
4.文件處理命令
@1.編輯命令
若是沒有文檔並且你又想編輯就能夠直接編輯vi aa【名字你能夠隨便命名】
也能夠先創建一個文檔touch aa 而後再編輯vi aa
編輯器有三種模式 1 命令行模式 2 末行模式 3 輸入模式
按Esc 就能夠進入命令行模式也是系統默認模式
輸入模式能夠按 o i a 均可以進入 退出能夠進入末行和命令行模式
末行模式能夠按ctrl+;它的主要功能是退出編輯器 也能夠保存退出文檔
q! 【強制退出不保存】 q【退出不保存】 wq【退出並保存後面也能夠加個!】
在輸入模式和命令行模式命令不少 若是你想具體知道哪些你能夠在和我說
如複製(yy)粘貼(p) 刪除(d)等等
@2.增刪改查
使用vi編輯該文件:
vi有兩個模式:一個是編輯一個是命令。咱們從命令進入編輯爲:i,o,a。通常使用的是i:由於這個我是最熟悉的。退出點擊esc鍵,就進入命令模式。
咱們須要刪除文件的當前行和後一行,命令爲:2dd,通常咱們使用的是單個字符的刪除爲:x。咱們通常進入編輯模式,來進行添加,修改,刪除。
可是當咱們刪除和修改的內容過多的時候,咱們使用命令行模式,進行修改,這樣方便,快捷,而命令行中,最經常使用到的是x,dd,u,p這四個命令:
x:刪除當前字符:
dd:刪除當前行:
u:恢復前一步操做:
p:複製以前刪除的行:
rm -rf 刪除文件
touch 、 vim、vi、echo、cp 建立新文件
mv 修更名字
5.磁盤分區命令
@1.主分區
@2.邏輯分區
@3.擴展分區
分區工具fdisk用法介紹
fdisk命令參數介紹
p、打印分區表。
n、新建一個新分區。
d、刪除一個分區。
q、退出不保存。
w、把分區寫進分區表,保存並退出
6.軟件管理命令(安裝 、 卸載、更新、查看、查看)
1)rpm
rpm ---
rpm -qf
rpm -ql
RPM是RedHat Package Manager(RedHat軟件包管理工具)相似Windows裏面的「添加/刪除程序」
rpm 執行安裝包
二進制包(Binary)以及源代碼包(Source)兩種。二進制包能夠直接安裝在計算機中,而源代碼包將會由RPM自動編譯、安裝。源代碼包常常以src.rpm做爲後綴名。
經常使用命令組合:
-ivh:安裝顯示安裝進度--install--verbose--hash
-Uvh:升級軟件包--Update;
-qpl:列出RPM軟件包內的文件信息[Query Package list];
-qpi:列出RPM軟件包的描述信息[Query Package install package(s)];
-qf:查找指定文件屬於哪一個RPM軟件包[Query File];
-Va:校驗全部的RPM軟件包,查找丟失的文件[View Lost];
-e:刪除包
rpm -q samba //查詢程序是否安裝
rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm //按路徑安裝並顯示進度
rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm //指定安裝目錄
rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm //用來檢查依賴關係;並非真正的安裝;
rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm //新版本降級爲舊版本
rpm -qa | grep httpd #[搜索指定rpm包是否安裝]--all搜索*httpd*
rpm -ql httpd #[搜索rpm包]--list全部文件安裝目錄
rpm -qpi Linux-1.4-6.i368.rpm #[查看rpm包]--query--package--install package信息
rpm -qpf Linux-1.4-6.i368.rpm #[查看rpm包]--file
rpm -qpR file.rpm #[查看包]依賴關係
rpm2cpio file.rpm |cpio -div #[抽出文件]
rpm -ivh file.rpm #[安裝新的rpm]--install--verbose--hash
rpm -ivh
http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
rpm -Uvh file.rpm #[升級一個rpm]--upgrade
rpm -e file.rpm #[刪除一個rpm包]--erase
2)yum
yum -
1 安裝 yum install 所有安裝 yum install package1 安裝指定的安裝包package1 yum groupinsall group1 安裝程序組group1
2 更新和升級 yum update 所有更新 yum update package1 更新指定程序包package1 yum check-update 檢查可更新的程序 yum upgrade package1 升級指定程序包package1 yum groupupdate group1 升級程序組group1
3 查找和顯示 yum info package1 顯示安裝包信息package1 yum list 顯示全部已經安裝和能夠安裝的程序包 yum list package1 顯示指定程序包安裝狀況package1 yum groupinfo group1 顯
3)源碼安裝------二級制
wget 命令
wget http://xxx.xxx.xxx.xx/aaa/gcc.tar.gz -c -O /tmp/gcc.tar.gz
-c 斷點下載
-O 指定路徑
wget 下載網站
wget -m http://xxx.com/xxx
wget -r -p -np -k http://xxx.com/xxx
-r, --recursive(遞歸) specify recursive download.(指定遞歸下載) -k, --convert-links(轉換連接) make links in downloaded HTML point to local files.(將下載的HTML頁面中的連接轉換爲相對連接即本地連接) -p, --page-requisites(頁面必需元素) get all images, etc. needed to display HTML page.(下載全部的圖片等頁面顯示所需的內容) -np, --no-parent(不追溯至父級) don't ascend to the parent directory.
4)二進制------(綠色軟件)
8、平常命令:
ping
命令格式:
ping [參數] [主機名或IP地址]
2.命令功能:
ping命令用於:肯定網絡和各外部主機的狀態;跟蹤和隔離硬件和軟件問題;測試、評估和管理網絡。若是主機正在運行並連在網上,它就對回送信號進行響應。每一個回送信號請求包含一個網際協議(IP)和 ICMP 頭,後面緊跟一個 tim 結構,以及來填寫這個信息包的足夠的字節。缺省狀況是連續發送回送信號請求直到接收到中斷信號(Ctrl-C)。
ping 命令每秒發送一個數據報而且爲每一個接收到的響應打印一行輸出。ping 命令計算信號往返時間和(信息)包丟失狀況的統計信息,而且在完成以後顯示一個簡要總結。ping 命令在程序超時或當接收到 SIGINT 信號時結束。Host 參數或者是一個有效的主機名或者是因特網地址。
3.命令參數:
-d 使用Socket的SO_DEBUG功能。
-f 極限檢測。大量且快速地送網絡封包給一臺機器,看它的迴應。
-n 只輸出數值。
-q 不顯示任何傳送封包的信息,只顯示最後的結果。
-r 忽略普通的Routing Table,直接將數據包送到遠端主機上。一般是查看本機的網絡接口是否有問題。
-R 記錄路由過程。
-v 詳細顯示指令的執行過程。
<p>-c 數目:在發送指定數目的包後中止。
-i 秒數:設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次。
-I 網絡界面:使用指定的網絡界面送出數據包。
-l 前置載入:設置在送出要求信息以前,先行發出的數據包。
-p 範本樣式:設置填滿數據包的範本樣式。
-s 字節數:指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節。
-t 存活數值:設置存活數值TTL的大小。
ssh
有的時候須要確認一下SSH客戶端及其相應的版本號。使用ssh -V命令能夠獲得版本號。須要注意的是,Linux通常自帶的是OpenSSH: 下面的例子即代表該系統正在使用OpenSSH:
$ ssh -V OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003
下面的例子代表該系統正在使用SSH2:
$ ssh -V ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu
命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 說明:以上兩種方式均可以遠程登陸到遠程主機,server表明遠程主機,name爲登陸遠程主機的用戶名。
命令格式: ssh name@remoteserver -p 2222 或者 ssh remoteserver -l name -p 2222 說明:p 參數指定端口號,一般在路由裏作端口映射時,咱們不會把22端口直接映射出去,而是轉換成其餘端口號,這時就須要使用-p端口號命令格式。
命令格式: ssh -t remoteserver1 ssh remoteserver2 說明:當遠程主機remoteserver2沒法直接到達時,可使用-t參數,而後由remoteserver1跳轉到remoteserver2。在此過程當中要先輸入remoteserver1的密碼,而後再輸入remoteserver2的密碼,而後就能夠操做remoteserver2了。
命令格式: ssh -l name remoteserver ‘command’ 說明:鏈接到遠程主機,並執行遠程主機的command命令。例如:查看遠程主機的內存使用狀況。 $ ssh -l root 192.168.1.100 svmon -G
默認狀況下,SSH監聽鏈接端口22,攻擊者使用端口掃描軟件就能夠看到主機是否運行有SSH服務,將SSH端口修改成大於1024的端口是一個明智的選擇,由於大多數端口掃描軟件(包括nmap)默認狀況都不掃描高位端口。打開/etc/ssh/sshd_config文件並查找下面這樣的行: Port 22 去掉該行前面的# 號,而後修改端口號並從新啓動SSH服務: $ /etc/init.d/ssh restart
有兩個SSH協議版本,僅使用SSH協議版本2會更安全,SSH協議版本1有安全問題,包括中間人攻擊(man-in-the-middle)和注入(insertion)攻擊。編輯/etc/ssh/sshd_config文件並查找下面這樣的行: # Protocol 2,1 修改成 Protocol 2
一般狀況下,不採用直接用root用戶登陸到遠程主機,因爲root用戶擁有超級權限,這樣會帶來安全隱患,因此,通常咱們用普通用戶登陸,當須要管理遠程主機時,再切換到root用戶下。打開/etc/ssh/sshd_config文件並查找下面這樣的行: #PermitRootLogin yes 將#號去掉,而後將yes修改爲no,重啓ssh服務,這樣就能夠禁止root用戶登陸。
將#號去掉,而後將bannertest.txt文件的全路徑替換/some/path,而後保存,重啓ssh服務。當客戶端登陸時,就會看到bannertest.txt文件中的提示信息。
假如公司內網有臺web服務器,可是隻對內不對外,這樣,外網就沒法訪問,能夠用ssh進行端口映射來實現外網訪問內網的web服務器。假如web服務器名爲webserver,webserver能夠用ssh訪問到遠端主機remoteserver,登陸到webserver,而後用下面命令進行映射 命令格式: ssh -R 3000:localhost:80 remoteserver 執行完成後,在remoteserver機器上,執行netstat -an | grep 3000,查看有沒有開通3000端口。並執行如下命令觀察是否能夠打開webserver上的網頁 $ w3m http://127.0.0.1:3000 若是能打開界面,說明映射成功.可是,這隻限於本機訪問web服務器,即只能remoteserver機器訪問webserver。由於3000端口綁定的是remoteserver機器的127.0.0.1端口。能夠編輯remoteserver機器上的/etc/ssh/sshd_config文件並添加以下內容: 添加 GatewayPorts yes 內容,把監聽端口3000綁定到 0.0.0.0 地址上,這樣外部的全部機器都能訪問到這個監聽端口,而後保存退出。並重啓ssh服務。完成後其它機器就能夠在瀏覽器中輸入 http://remoteserver:3000來訪問webserver了。
首先編輯一個文件,如bannertest.txt,文件內容自行定義。而後打開/etc/ssh/sshd_config文件並查找下面這樣的行: #Banner /some/path
telnet
(1)用法:
用法: telnet [參數] [主機]
(2)功能:
功能: telnet命令一般用來遠程登陸。
原理: Telnet服務雖然也屬於客戶機/服務器模型的服務,但它更大的意義在於實現了基於Telnet協議的遠程登陸(遠程交互式計算)。
telnet實現的遠程登陸:
分時系統容許多個用戶同時使用一臺計算機,爲了保證系統的安全和記賬方便,系統要求每一個用戶有單獨的賬號做爲登陸標識,系統還爲每一個用戶指定了一個口令。用戶在使用該系統以前要輸入標識和口令,這個過程被稱爲'登遠程登錄是指用戶使用Telnet命令,使本身的計算機暫時成爲遠程主機的一個仿真終端的過程。仿真終端等效於一個非智能的機器,它只負責把用戶輸入的每一個字符傳遞給主機,再將主機輸出的每一個信息回顯在屏幕上。
telnet的簡介:
Telnet協議是TCP/IP協議族中的一員,是Internet遠程登錄服務的標準協議和主要方式。它爲用戶提供了在本地計算機上完成遠程主機工做的能力。在終端使用者的電腦上使用telnet程序,用它鏈接到服務器。終端使用者能夠在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制檯上輸入同樣。能夠在本地就能控制服務器。要開始一個 telnet會話,必須輸入用戶名和密碼來登陸服務器。
Telnet是經常使用的遠程控制Web服務器的方法。可是,telnet由於採用明文傳送報文,安全性很差,不少Linux服務器都不開放telnet服務,而改用更安全的ssh方式了。但仍然有不少別的系統可能採用了telnet方式來提供遠程登陸,所以弄清楚telnet客戶端的使用方式還是頗有必要的。
telnet命令還可作別的用途,好比肯定遠程服務的狀態,好比肯定遠程服務器的某個端口是否能訪問。
(3)選項參數:
1) -8 容許使用8位字符資料,包括輸入與輸出。
2) -a 嘗試自動登入遠端系統。
3) -b<主機別名> 使用別名指定遠端主機名稱。
4) -c 不讀取用戶專屬目錄裏的.telnetrc文件。
5) -d 啓動排錯模式。
6) -e<脫離字符> 設置脫離字符。
7) -E 濾除脫離字符。
8) -f 此參數的效果和指定"-F"參數相同。
9) -F 使用Kerberos V5認證時,加上此參數可把本地主機的認證數據上傳到遠端主機。
10) -k<域名> 使用Kerberos認證時,加上此參數讓遠端主機採用指定的領域名,而非該主機的域名。
11) -K 不自動登入遠端主機。
12) -l<用戶名稱> 指定要登入遠端主機的用戶名稱。
13) -L 容許輸出8位字符資料。
14) -n<記錄文件> 指定文件記錄相關信息。
15) -r 使用相似rlogin指令的用戶界面。
16) -S<服務類型> 設置telnet連線所需的IP TOS信息。
17) -x 假設主機有支持數據加密的功能,就使用它。
18) -X<認證形態> 關閉指定的認證形態。
(4)實例:
1)[root@localhost xinetd.d]# telnet localhost 23 鏈接本地的主機,端口號爲23
ftp
1、ftp的get命令和mget命令有何不一樣?
get一次只下載一個文件;mget一次能夠下載多個文件,並且支持通配符,須要注意的是在mget的時侯,須要對每個文件都選擇y/n,若是想不交互的下載所有的文件,能夠先用prompt命令關掉交互方式(關閉:prompt off;打開:prompt on)。
2、FTP使用什麼命令來定位服務器與本地硬盤的路徑?
ftp中用lcd切換本地路徑,用cd切換遠程服務器的路徑。經常使用到的命令以下:
cd目錄名(進入服務器目錄) lcd目錄名(進入本機目錄)
cd \(退到服務器根目錄) lcd \(退到本機根目錄)
cd ..(退回到上一級目錄) lcd ..(退回到上一級目錄)
3、!命令有何做用?
執行本地shell命令,如:!dir(顯示本機當親目錄內容),若是不加!如:dir(顯示服務器當前目錄內容)
4、ftp命令支持「含有空格」的文件夾/文件名嗎?
支持,只要在引用時加上雙引號「」便可!
5、下面是命令行方式使用FTP的實戰練習
假設有一ftp服務器:ftp.test.com,用戶名:username,密碼:user1234。在本地電腦D:盤建立一個文件夾「qint」。將要上傳的文件複製到D:\qint裏。經過FTP命令將文件從本地上傳,從服務器下載的步驟以下:
一、「開始」→「運行」→輸入「FTP」
二、open ftp.test.com
注意:這一步能夠與第一步合併,在「運行」裏直接輸入:ftp ftp.test.com。若是你的FTP服務器不是用的21默認端口,假如端口是2121,那麼此步的命令應在後面空格加2121,即「open ftp.test.com
三、username 注意:提示你輸入用戶名
四、user1234 注意:提示你輸入密碼,密碼不回顯,打完密碼後回車便可。若是你的密碼輸入錯誤,將不會提示你從新輸入,這時你要鍵入「user」命令,將會出現第三步,你能夠從新輸入用戶名和密碼。
五、dir 注意:你成功登錄後就能夠用dir查看命令查看FTP服務器中的文件及目錄,用ls命令只能夠查看文件。
六、mkdir qint 注意:在FTP服務器上根目錄下創建qint目錄
七、cd qint 注意:進入目錄qint,用「cd 你的目錄名」能夠進入當前目錄的下一級目錄,這跟DOS同樣。
八、bin
注意:採用二進制傳輸。若是你要上傳下載,這一步很重要,不先執行這個命令,上傳下載會很慢。大多數系統(包括UNIX系統)只有兩種模式:文本模式和二進制模式。文本傳輸器使用ASCII字符,並由回車鍵和換行符分開,而二進制不用轉換或格式化就可傳字符,二進制模式比文本模式更快,而且能夠傳輸全部ASCII值,因此係統管理員通常將FTP設置成二進制模式。通常來講,咱們最好都用binary方式,這樣能夠保證不出錯。
九、lcd d:\qint
注意:定位本地默認文件夾,在前面已事先在D:盤建立
十、!dir
注意:查看本地文件夾中的文件及目錄
十一、put i001.jpg 注意:將當前目錄(d:\qint)中的文件i001.jpg上傳到FTP服務器默認目錄。能夠用「mput *.*」將全部文件上傳到FTP服務器上。
十二、get d123.jpg 注意:將FTP服務器默認目錄中的文件d123.jpg下載到當前目錄下(d:\qint)。能夠用「mget *.*」將全部文件下載到d:\qint
1三、delete *.*
注意:刪除服務器對應目錄qint中的全部文件。
1四、cd ..
注意:返回至上一級目錄,即根目錄。返回上一級目錄用「cd ..」要注意,中間有空格。返回根目錄用「cd \」。
1五、mrdir qint
注意:刪除目錄qint。刪除目錄,在此目錄下不能有文件及目錄,否則將沒法刪除。
1六、bye
注意:退出FTP服務器。
上傳下載時特別要注意服務器及本地電腦的當前目錄,文件是從哪裏到哪裏的問題。查看FTP服務器的當前目錄命令爲pwd,能夠用cd命令定位服務器的目錄。能夠用lcd命令定位本地電腦的目錄。
以上實例應用到了採用FTP命令行方式上傳下載的最經常使用命令,你還能夠用命令「?」查看更多的命令。
9、服務命令:
httpd
參數說明:
一、查看nginx進程
1
ps -ef|grep nginx
說明:nginx的進程由主進程和工做進程組成。
www.2cto.com
二、啓動nginx
1
nginx
啓動結果顯示nginx的主線程和工做線程,工做線程的數量跟nginx.conf中的配置參數worker_processes有關。
三、平滑啓動nginx
1
kill -HUP `cat /var/run/nginx.pid`
2
或者
3
nginx -s reload
其中進程文件路徑在配置文件nginx.conf中能夠找到。
平滑啓動的意思是在不中止nginx的狀況下,重啓nginx,從新加載配置文件,啓動新的工做線程,完美中止舊的工做線程。
2. /ect/init.d/MySQL start (前面爲mysql的安裝路徑)
1.mysqladmin restart 2./ect/init.d/mysql restart (前面爲mysql的安裝路徑)
1.mysqladmin shutdown 2./ect/init.d/mysql shutdown (前面爲mysql的安裝路徑)
1.進入目錄mysql\bin,再鍵入命令mysql -uroot -p, 回車後提示輸入密碼。 2.退出mysql命令:exit(回車)
1.mysqladmin -u用戶名 -p舊密碼 password 新密碼 2.或進入mysql命令行SET PASSWORD FOR root=PASSWORD("root");
1.grant select on 數據庫.* to 用戶名@登陸主機 identified by "密碼" 2.如增長一個用戶test密碼爲123,讓他能夠在任何主機上登陸,並對全部數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入mysql,而後鍵入如下命令: 3.grant select,insert,update,delete on *.* to " Identified by "123";
必須首先登陸到mysql中,有關操做都是在mysql的提示符下進行,並且每一個命令以分號結束 一、顯示數據庫列表。
show databases;
二、顯示庫中的數據表:
use mysql; //打開庫show tables;
三、顯示數據表的結構:
describe 表名;
四、建庫是設置好字符編碼:
create database 庫名 character set utf-8;
五、建表:
use 庫名;create table 表名(字段設定列表);
六、刪庫和刪表:
drop database 庫名;drop table 表名;
七、將表中記錄清空:
delete from 表名;
八、顯示錶中的記錄:
select * from 表名;
九、編碼的修改
若是要改變整個mysql的編碼格式:啓動mysql的時候,mysqld_safe命令行加入--default-character-set=gbk若是要改變某個庫的編碼格式:在mysql提示符後輸入命令alter database db_name default character set gbk;
一、文本數據轉到數據庫中
文本數據應符合的格式:字段數據之間用tab鍵隔開,null值用來代替。例: name duty 2006-11-23
數據傳入命令 load data local infile "文件名" into table 表名; 二、導出數據庫和表
mysqldump --opt news > news.sql(將數據庫news中的全部表備份到news.sql文件,news.sql是一個文本文件,文件名任取。)mysqldump --opt news author article > author.article.sql(將數據庫news中的author表和article表備份到author.article.sql文件, author.article.sql是一個文本文件,文件名任取。)mysqldump --databases db1 db2 > news.sql(將數據庫dbl和db2備份到news.sql文件,news.sql是一個文本文件,文件名任取。)mysqldump -h host -u user -p pass --databases dbname > file.dump就是把host上的以名字user,口令pass的數據庫dbname導入到文件file.dump中mysqldump --all-databases > all-databases.sql(將全部數據庫備份到all-databases.sql文件,all-databases.sql是一個文本文件,文件名任取。)
三、導入數據
mysql < all-databases.sql(導入數據庫)mysql>source news.sql;(在mysql命令下執行,可導入表)
1、格式: mysql -h主機地址 -u用戶名 -p用戶密碼
一、例1:鏈接到本機上的MYSQL。
首先在打開DOS窗口,而後進入目錄 mysqlbin,再鍵入命令mysql -uroot -p,回車後提示你輸密碼,若是剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車便可進入到MYSQL中了,MYSQL的提示符是: mysql>。
二、例2:鏈接到遠程主機上的MYSQL。假設遠程主機的IP爲:110.110.110.110,用戶名爲root,密碼爲abcd123。則鍵入如下命令:
mysql -h110.110.110.110 -uroot -pabcd123(注:u與root能夠不用加空格,其它也同樣)
三、退出MYSQL命令: exit (回車)。2、修改密碼
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
一、例1:給root加個密碼ab12。首先在DOS下進入目錄mysqlbin,而後鍵入如下命令:
mysqladmin -uroot -password ab12
注:由於開始時root沒有密碼,因此-p舊密碼一項就能夠省略了。 二、例2:再將root的密碼改成djg345。
mysqladmin -uroot -pab12 password djg345
格式:grant select on 數據庫.* to 用戶名@登陸主機 identified by \"密碼\"
例一、增長一個用戶test1密碼爲abc,讓他能夠在任何主機上登陸,並對全部數據庫有查詢、插入、修改、刪除的權限。首先用 以root用戶連入MySQL,而後鍵入如下命令:
grant select,insert,update,delete on *.* to test1@\"%\" Identified by \"abc\";但例1增長的用戶是十分危險的,你想如某我的知道test1的密碼,那麼他就能夠在internet上的任何一臺電腦上登陸你的MySQL數據庫並對你的數據能夠隨心所欲了,解決辦法見例2。
例二、增長一個用戶test2密碼爲abc,讓他只能夠在localhost上登陸,並能夠對數據庫mydb進行查詢、插入、修改、刪除的操做(localhost指本地主機,即MySQL數據庫所在的那臺主機),這樣用戶即便用知道test2的密碼,他也沒法從internet上直接訪問數據庫,只能經過MySQL主機上的web頁來訪問。grant select,insert,update,delete on mydb.* to test2@localhost identified by \"abc\";若是你不想test2有密碼,能夠再打一個命令將密碼消掉。grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";在上面講了登陸、增長用戶、密碼更改等問題。下面咱們來看看MySQL中有關數據庫方面的操做。注意:你必須首先登陸到MySQL中,如下操做都是在MySQL的提示符下進行的,並且每一個命令以分號結束。
一、若是你打命令時,回車後發現忘記加分號,你無須重打一遍命令,只要打個分號回車就能夠了。也就是說你能夠把一個完整的命令分紅幾行來打,完後用分號做結束標誌就完成。二、你可使用光標上下鍵調出之前的命令。但之前我用過的一個MySQL舊版本不支持。我如今用的是mysql-3.23.27-beta-win。
一、顯示數據庫列表:show databases;剛開始時才兩個數據庫:mysql和test。MySQL庫很重要它裏面有MYSQL的系統信息,咱們改密碼和新增用戶,實際上就是用這個庫進行操做。二、顯示庫中的數據表:use mysql; //打開庫,學過FOXBASE的必定不會陌生吧show tables;三、顯示數據表的結構:describe 表名;四、建庫:create database 庫名;五、建表:use 庫名;create table 表名 (字段設定列表);六、刪庫和刪表:drop database 庫名;drop table 表名;七、將表中記錄清空:delete from 表名;八、顯示錶中的記錄:select * from 表名;
6、一個建庫和建表以及插入數據的實例
drop database if exists school; //若是存在SCHOOL則刪除 create database school; //創建庫SCHOOL use school; //打開庫SCHOOL create table teacher //創建表TEACHER ( id int(3) auto_increment not null primary key, name char(10) not null, address varchar(50) default ’深圳’, year date ); //建表結束 //如下爲插入字段 insert into teacher values(’’,’glchengang’,’深圳一中’,’1976-10-10’); insert into teacher values(’’,’jack’,’深圳一中’,’1975-12-23’); 注:在建表中(1)將ID設爲長度爲3的數字字段:int(3)並讓它每一個記錄自動加一:auto_increment並不能爲空:not null並且讓他成爲主字段primary key(2)將NAME設爲長度爲10的字符字段(3)將ADDRESS設爲長度50的字符字段,並且缺省值爲深圳。varchar和char有什麼區別呢,只有等之後的文章再說了。(4)將YEAR設爲日期字段。 若是你在MySQL提示符鍵入上面的命令也能夠,但不方便調試。你能夠將以上命令原樣寫入一個文本文件中假設爲school.sql,而後複製到c:\\下,並在DOS狀態進入目錄\\mysql\\bin,而後鍵入如下命令: mysql -uroot -p密碼 < c:\\school.sql 若是成功,空出一行無任何顯示;若有錯誤,會有提示。(以上命令已經調試,你只要將//的註釋去掉便可使用)。
一、文本數據應符合的格式:字段數據之間用tab鍵隔開,null值用\\n來代替。 例:
3 rose 深圳二中 1976-10-104 mike 深圳一中 1975-12-23
二、數據傳入命令 load data local infile \"文件名\" into table 表名。
注意:你最好將文件複製到\\mysql\\bin目錄下,而且要先用use命令打表所在的庫。5、備份數據庫:
一、mysqldump --opt school>school.bbbmysqldump --opt school>school.bbb(命令在DOS的\\mysql\\bin目錄下執行)註釋:將數據庫school備份到school.bbb文件,school.bbb是一個文本文件,文件名任取,打開看看你會有新發現。後記:其實MySQL的對數據庫的操做與其它的SQL類數據庫大同小異,您最好找本將SQL的書看看。我在這裏只介紹一些基本的,其實我也就只懂這些了,呵呵。最好的MYSQL教程仍是「晏子「譯的「MYSQL中文參考手冊「不只免費每一個相關網站都有下載,並且它是最權威的。惋惜不是象\"PHP4中文手冊\"那樣是chm的格式,在查找函數命令的時候不太方便。二、修改登陸密碼1) mysqladmin -u用戶名 -p舊密碼 password 新密碼:例:mysqladmin -u root password 21century注:由於開始時root沒有密碼,因此-p舊密碼一項就能夠省略了。2)直接修改user表的root用戶口令:mysql> user mysql;mysql> update user set pasword=password('21century') where user='root';mysql> flush privileges;注:flush privileges的意思是強制刷新內存受權表,不然用的仍是緩衝中的口令。三、測試密碼是否修改爲功:1)不用密碼登陸:[root@test1 local]# mysqlERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)顯示錯誤,說明密碼已經修改。2)用修改後的密碼登陸:[root@test1 local]# mysql -u root -pEnter password: (輸入修改後的密碼21century)Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 177 to server version: 3.23.48Type 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql>成功!這是經過mysqladmin命令修改口令,也可經過修改庫來更改口令。
四、啓動和中止:
啓動:Mysql從3.23.15版本開始做了改動,默認安裝後服務要用MySQL用戶來啓動,不容許root用戶啓動。若是非要用root用戶來啓動,必須加上--user=root參數(./safe_mysqld --user=root &)中止:mysqladmin -u root -p shutdown。
五、導出meeting數據庫:
mysqldump -uroot -p21century meeting > db_meeting.sql導人dbname數據庫:mysqldump -uroot -p21century dbname < xxx.sql導入數據庫還可用相似於oracle中@my_script.sql的方式一次執行大量sql語句,這在使用mysqldump不起做用時很是有用。例:#./mysql -uroot -p < /home/xuys/db_meeting_2003.sql(注:create database、use databasename、create table和insert into語句均可寫在上面的腳步文件中)
六、給表更名:
RENAME TABLE ztemp TO ztemp4;
七、修改字段屬性:
ALTER TABLE bbabase CHANGE news_id id VARCHAR(5) NOT NULL;
八、在表中的content後增長一字段:
ALTER TABLE bbabase ADD leave_time DATETIME NOT NULL AFTER
linux查看日誌文件內容命令tail、cat、tac、head、echo
tail -f test.log 你會看到屏幕不斷有內容被打印出來. 這時候中斷第一個進程Ctrl-C,
--------------------------- linux 如何顯示一個文件的某幾行(中間幾行)
從第3000行開始,顯示1000行。即顯示3000~3999行 cat filename | tail -n +3000 | head -n 1000
顯示1000行到3000行 cat filename| head -n 3000 | tail -n +1000
*注意兩種方法的順序 分解: tail -n 1000:顯示最後1000行 tail -n +1000:從1000行開始顯示,顯示1000行之後的 head -n 1000:顯示前面1000行
用sed命令 sed -n '5,10p' filename 這樣你就能夠只查看文件的第5行到第10行。
例:cat mylog.log | tail -n 1000 #輸出mylog.log 文件最後一千行
--------------------------- cat主要有三大功能: 1.一次顯示整個文件。$ cat filename 2.從鍵盤建立一個文件。$ cat > filename 只能建立新文件,不能編輯已有文件. 3.將幾個文件合併爲一個文件: $cat file1 file2 > file 參數: -n 或 --number 由 1 開始對全部輸出的行數編號 -b 或 --number-nonblank 和 -n 類似,只不過對於空白行不編號 -s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換爲一行的空白行 -v 或 --show-nonprinting 例: 把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案裏 cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)以後將內容附加到 textfile3 裏。 cat -b textfile1 textfile2 >> textfile3
把test.txt文件扔進垃圾箱,賦空值test.txt cat /dev/null > /etc/test.txt 注意:>意思是建立,>>是追加。千萬不要弄混了。 ------------------------------------------ tac (反向列示) tac 是將 cat 反寫過來,因此他的功能就跟 cat 相反, cat 是由第一行到最後一行連續顯示在螢幕上, 而 tac 則是由最後一行到第一行反向在螢幕上顯示出來!
------------------------------------------ 在Linux中echo命令用來在標準輸出上顯示一段字符,好比: echo "the echo command test!"
這個就會輸出「the echo command test!」這一行文字!
echo "the echo command test!">a.sh 這個就會在a.sh文件中輸出「the echo command test!」這一行文字! 該命令的通常格式爲: echo [ -n ] 字符串其中選項n表示輸出文字後不換行;字符串能加引號,也能不加引號。 用echo命令輸出加引號的字符串時,將字符串原樣輸出; 用echo命令輸出不加引號的字符串時,將字符串中的各個單詞做爲字符串輸出,各字符串之間用一個空格分割。
一、利用Mysqldump+二進制日誌實現備份 二、利用LVM快照+二進制日誌實現備份 三、使用Xtrabackup備份
一:實驗環境介紹:
系統介紹:CentOS6.4_X64 數據庫版本:mysql-5.5.33
二:基於Mysqldump命令實現備份恢復
2.一、思路概念
Mysqldump是一個邏輯備份命令;意思就是將數據庫中的數據備份成一個文本文件;也能夠說是將表的結構和數據存儲在文本文件中。
Mysqldump命令的工做原理很簡單,它先查出須要備份的表的結構,再在文本文件中生成一個CREATE語句。而後,將表中的全部記錄轉換爲一條INSTERT語句。這些CREATE語句和INSTERT語句都是還原時使用的。還原數據時就可使用其中的CREATE語句來建立表。使用其中的INSERT語句來還原數據。它能夠實現整個服務器備份,也能夠實現單個或部分數據庫、單個或部分表、表中的某些行、存儲過程、存儲函數、觸發器的備份;而且能自動記錄備份時刻的二進制日誌文件及相應的位置。對於InnoDB存儲引擎來說支持基於單事務模式實現熱備,對於MyISAM則最多支持溫備。
2.二、備份策略
Mysqldump全備+二進制日誌增備
2.三、過程實現
(1)Mysqldump全備 因爲Mysql數據庫默認的爲MyISAM存儲引擎因此只有使用溫備(備份同時僅支持讀請求)進行,因此咱們要爲全部數據庫添加讀鎖
1
2
|
[root@stu18 ~]
#mysqldump -uroot -pmypass --lock-all-tables --master-data=2 --events --routines--all-databases > /zhao/database_`date +%F`.sql
|
解析:–lock-all-tables表示爲全部表施加讀鎖;–master-data=2表示在備份文件中記錄當前二進制日誌的位置;–events表示備份數據的同時備份時間調度器代碼;–routines表示備份數據的同時備份存儲過程和存儲函數;–all-databases表示備份全部庫。
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@stu18 zhao]
# less database_2013-08-13.sql
--
#表示註釋項
-- Position to start replication or point-
in
-
time
recovery from
--
-- CHANGE MASTER TO MASTER_LOG_FILE=
'mysql-bin.000001'
, MASTER_LOG_POS=14203;
#這裏表示當前處於mysql-bin.000001這個二進制日誌中,事件爲14203這是經過--master-data=2產生的
--
-- Current Database: `hellodb`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */;
|
(2)二進制全備
方法一: 導出二進制日誌文件內容
1
2
|
[root@stu18 data]
# mysqlbinlog mysql-bin.000001 >/zhao/binlog_`date +%F`.sql
|
方法二:滾動日誌複製文件
1
2
3
4
|
mysql> flush logs;
#滾動日誌
[root@stu18 data]
# cp mysql-bin.000001 /zhao/mysql-bin.000001 #複製導出二進制文件
|
(3)二進制增備 首先添加數據信息
1
2
|
mysql> use hellodb;
mysql> INSERT INTO students(Name,Age,Gender,ClassID,TeacherID) values (
'Yang kang'
,22,
'M'
,3,3);
|
而後二進制增備
1
2
|
[root@stu18 data]
# mysqlbinlog --start-position=14203 --stop-position=14527 mysql-bin.000001 > /zhao/binlog_`date +%F_%H`.sql
|
解析:–start-position=14203是上次全備以後的二進制事件位置;–stop-position=14527最近一天的二進制事件位置。
2.四、模擬數據庫損壞,實現恢復工做
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
mysql> DROP DATABASE hellodb;
#刪除數據庫
############下面這些過程要在離線狀態下執行############
mysql> SET sql_log_bin=0;
#先關閉二進制日誌
mysql> flush logs;
#滾動日誌
[root@stu18 ~]
# mysql -uroot -pmypass < /zhao/database_2013-08-13.sql #導入數據庫備份文件
[root@stu18 ~]
# mysql -uroot -pmypass < /zhao/binlog_2013-08-13_19.sql #導入增量備份文件
[root@stu18 ~]
# mysql -uroot –pmypass #登陸查看,恢復完成
mysql> SET sql_log_bin=1;
|
這種備份方式恢復簡單,可是恢復還原以後索引會出現錯誤須要重建,並且備份結果會佔據很大的空間,請酌情使用。
PS:mysqldump經常使用命令小結 備份MySQL數據庫的命令
1
|
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
|
備份MySQL數據庫爲帶刪除表的格式
備份MySQL數據庫爲帶刪除表的格式,可以讓該備份覆蓋已有數據庫而不須要手動刪除原有數據庫。
1
|
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
|
直接將MySQL數據庫壓縮備份
1
|
mysqldump -hhostname -uusername -ppassword databasename |
gzip
> backupfile.sql.gz
|
備份MySQL數據庫某個(些)表
1
|
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
|
同時備份多個MySQL數據庫
1
|
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
|
僅僅備份數據庫結構
1
|
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
|
備份服務器上全部數據庫
1
|
mysqldump –all-databases > allbackupfile.sql
|
還原MySQL數據庫的命令
1
|
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
|
還原壓縮的MySQL數據庫
1
|
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
|
將數據庫轉移到新服務器
1
|
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
|
3、基於LVM快照實現備份恢復
3.一、思路明細
(1)LVM這種備份方式要求Mysql的數據保存在邏輯捲上 (2)須要給Mysql服務器施加讀鎖(mysql>FLUSH TABLES WITH READLOCK;),這裏不可直接退出服務器 (3)另起終端爲數據所在的卷建立快照(lvcreate),保證事務日誌和數據文件必須在同一捲上(分別建立可能會致使數據文件和事務日誌不一致,從而可能致使沒法正常恢復)
3.二、備份策略
LVM快照全備+二進制日誌增備(對於即時點恢復還要恢復至後續的二進制位置)
3.三、前提條件
(1)建立邏輯卷及掛載邏輯卷,此過程在此就不作演示了
(2)初始化mysql將其數據目錄指向/mydata/data
1
2
3
4
|
[root@stu18 ~]
# cd /usr/local/mysql/
[root@stu18 mysql]
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
|
(3)編輯查看配置文件,重啓服務
1
2
3
4
5
6
7
8
|
[root@stu18 mysql]
# vim /etc/my.cnf
datadir =
/mydata/data
#查看此項是否認義數據目錄位置
sync_binlog=1
#添加此項,每一個事務提交時候,把事務日誌從緩存區寫到日誌文件中,而且刷新日誌文件的數據到磁盤上;
[root@stu18 mysql]
# service mysqld start
|
3.四、過程展現
(1)確保事務日誌和數據文件必須在同一捲上
1
2
3
4
5
6
|
[root@stu18 ~]
# ls /mydata/data/
hellodb myclass mysql-bin.000003 stu18.magedu.com.err
ibdata1 mysql mysql-bin.000004 stu18.magedu.com.pid
ib_logfile0 mysql-bin.000001 mysql-bin.index student
ib_logfile1 mysql-bin.000002 performance_schema
test
|
解析:其中ib_logfile0與ib_logfile1是日誌文件 (2)施加全局鎖並滾動日誌
1
2
|
mysql> FLUSH TABLES
WITH
READ
LOCK;
mysql> FLUSH LOGS;
|
(3)查看並保存當前正在使用的二進制日誌及當前執行二進制日誌位置(很是重要)
1
2
3
4
5
6
7
8
|
mysql> SHOW MASTER STATUS;
+
------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+
------------------+----------+--------------+------------------+
| mysql-bin.000004 | 187 | | |
+
------------------+----------+--------------+------------------+
[root@stu18 zhao]
# mysql -uroot -pmypass -e
'SHOW MASTER STATUS;'
>/zhao/lvmback-2013-08-14/binlog.txt
|
(4)建立快照卷
1
2
|
[root@stu18 zhao]
# lvcreate -L 100M -s -p r -n mydata-lvm /dev/vg1/mydata
|
(5)當即切換終端釋放鎖
1
|
mysql> UNLOCK TABLES;
|
(6)備份數據
1
2
|
[root@stu18 data]
# cp -a * /zhao/lvmback-2013-08-14/
|
(7)二進制實現增量備份
1
2
3
4
5
6
7
8
9
10
11
|
mysql> use hellodb;
#指定默認數據庫
Database
changed
mysql>
CREATE
TABLE
testtb (id
int
,
name
CHAR
(10));
#建立表
Query OK, 0
rows
affected (0.35 sec)
mysql>
INSERT
INTO
testtb
VALUES
(1,
'tom'
);
#添加數據
Query OK, 1 row affected (0.09 sec)
[root@stu18 data]
# mysqlbinlog
--start-position=187 mysql-bin.000004 > /zhao/lvmlogbin_2013-08-14/binlog.sql #日誌實現增量備份
|
(8)模擬數據庫崩潰
1
2
3
4
5
6
|
[root@stu18 ~]
# service mysqld stop
[root@stu18 ~]
# cd /mydata/data/
[root@stu18 data]
# rm -rf *
|
(9)恢復數據
1
2
3
4
5
6
7
8
9
10
|
[root@stu18 ~]
# cp /zhao/lvmback-2013-08-14/* /mydata/data/ -a #徹底備份恢復
[root@stu18 ~]
# cd /mydata/data/ #查看恢復數據內容
[root@stu18 data]
# chown -R mysql.mysql * #更改屬主屬組
[root@stu18 data]
# service mysqld start #啓動服務
[root@stu18 data]
# mysql -uroot –pmypass #登陸測試
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
mysql> SHOW DATABASES;
#查看數據完整性,無測試表testtd使用二進制恢復
mysql>
SET
sql_log_bin=0
#關閉二進制日誌
mysql> source /zhao/lvmlogbin_2013-08-14/binlog.sql;
#二進制恢復
mysql> SHOW TABLES;
#查看恢復結果
+
-------------------+
| Tables_in_hellodb |
+
-------------------+
| classes |
| coc |
| courses |
| scores |
| students |
| teachers |
| testtb |
| toc |
+
-------------------+
mysql>
SET
sql_log_bin=1;
#開啓二進制日誌
|
此工具是接近於熱備的方式實現的,而且用此方法來備份恢復數據速度是很是快的。
將遠程服務器上的文件複製到本機
#scp remote@www.abc.com:/usr/local/sin.sh /home/administrator
remote 經過remote用戶登陸到遠程服務器(也可使用其餘擁有同等權限的用戶) www.abc.com 遠程服務器的域名(固然也可使用該服務器ip地址) /usr/local/sin.sh 欲複製到本機的位於遠程服務器上的文件 /home/administrator 將遠程文件複製到本地的絕對路徑
注意兩點: 1.若是遠程服務器防火牆有特殊限制,scp便要走特殊端口,具體用什麼端口視狀況而定,命令格式以下: #scp -p 4588 remote@www.abc.com:/usr/local/sin.sh
將本機文件複製到遠程服務器上
#scp /home/administrator/news.txt root@192.168.6.129:/etc/squid
/home/administrator/ 本地文件的絕對路徑 news.txt 要複製到服務器上的本地文件 root 經過root用戶登陸到遠程服務器(也可使用其餘擁有同等權限的用戶) 192.168.6.129 遠程服務器的ip地址(也可使用域名或機器名) /etc/squid 將本地文件複製到位於遠程服務器上的路徑