2019年9月9日 星期一

MySQL 資料庫 相關常用指令





MySQL資料庫

常用指令

# 登入
shell> mysql -u root -p
# 顯示max_allowed_packet參數值
mysql> select @@global.max_allowed_packet, @@session.max_allowed_packet;
# 顯示使用者
mysql> select host, user, password from mysql.user;
# 設定log
mysql> SET GLOBAL general_log = 'ON';
mysql> SET GLOBAL slow_query_log = 'ON';
#創建使用者
mysql> create user 'root'@'localhost' identified by 'password';
#顯示User
mysql> SELECT User,Host FROM mysql.user;
#移除權限
mysql> revoke all privileges on *.* from 'root'@'127.0.0.1';
#刪除使用者
mysql> drop user 'root'@'127.0.0.1';
#更改密碼
mysql> set password=password('password');
#更改別人密碼
mysql> set password for 'jik'@'localhost' =password('123');
#顯示權限
mysql> SHOW GRANTS FOR 'root'@'localhost';
#給予所有權限(root)
mysql> Grant All Privileges On *.* To root@localhost Identified By 'password' With Grant Option;
#給予特定權限
GRANT ALL PRIVILEGES ON nextepfamily.* TO 'infopower'@'59.125.163.230' IDENTIFIED BY '!QAZ2wsx' WITH GRANT OPTION;

Docker MySQL 備份

docker exec CONTAINER /usr/bin/mysqldump -u root --password=password DATABASE > piwikbackup.sql

# Backup
docker exec CONTAINER /usr/bin/mysqldump -u root --password=password DATABASE > backup.sql

# Restore
cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE

排程備份

# 於 Ubuntu Server 使用 Crontab 定時自動備份 Mysql 資料庫
# 使用指令 sudo vi /etc/crontab 編輯檔案
# 加入備份指令如下
# 分 時 日 月 週 使用者 指令
# 表示於每日12點整,以 root 身份備份 mysql 所有資料庫並存放到 /home/user/mysqldump/ 資料夾中
0 0 * * * root mysqldump -u root -ppassword --all-databases > /home/user/mysqldump/database_`date '+\%Y-\%m-\%d'`.sql
# 只備份指定的資料庫 somedb
0 0 * * * root mysqldump -u root -ppassword st_181 > /home/user/mysqldump/somedb_`date '+\%Y-\%m-\%d'`.sql
# 使用指令 sudo service cron restart 重啟 crontab 服務

# 或寫在batch裡
# 1.修改linux 排程檔案
nano /etc/crontab
# 2.加入【定期執行備份批次檔案】
0  19    * * *   root    /bin/bash /home/user/mongo_backup.sh
# 3.MYSQL batch檔大概這樣寫,第一行為mysql的dump指令,第二行為刪除超過七天的dump file
mongodump --host 127.0.0.1 -d reporting --port 27017 --username root --password password --out /home/report_db_backup//$(date +%Y-%m-%d)
find /home/report_db_backup/ -mtime +7 -delete
# 4. 把batch檔的權限打開
chmod 775

產金鑰匯出至別台電腦免登入

【用戶端】
一、建立不用密碼即可登入的ssh連線,先在用戶端建立公鑰、私鑰:
# ssh-keygen -t rsa
二、將公鑰檔案資料上傳到伺服器上:
# scp ~/.ssh/id_rsa.pub 要登入伺服器的帳號@伺服器IP:~

如果顯示以下訊息

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
####################################################
Please contact your system administrator.
Add correct host key in /home/####/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/#####/.ssh/known_hosts:1
RSA host key for A.B.C.D(IP) has changed and you have requested strict checking.
Host key verification failed.
lost connection
表示server被重灌了,這樣子新的server就和known_hosts裡的狀態不同。
在Client端以SSH連線到主機時,會要求產生認證資訊,儲存在client端的~/.ssh/known_ssh檔中。
只要以ssh-keygen -R將該host的認證資訊刪除。
#ssh-keygen -R IP位置
/home/####/.ssh/known_hosts updated.
Original contents retained as /home/####/.ssh/known_hosts.old
【伺服器端】
三、設定伺服器上的ssh
1.連上伺服器端,切換至使用者目錄檢查是否有.ssh目錄
# cd 使用者家目錄
# ls -ld .ssh
2.若沒有,建立此資料夾,並設定權限為700
# mkdir .ssh; chmod 700 .ssh
3.檢查是否有收到用戶端傳來的公鑰
# ls -l *pub
4.將公鑰檔案內的資料使用 cat 轉存到 authorized_keys 內
# cat id_rsa.pub >> .ssh/authorized_keys
# chmod 644 .ssh/authorized_keys
# ls -l .ssh
 
【用戶端】
四、將備份的指令寫成shell script,存檔至/使用者家目錄/backup/【web_autobackup.sh】
# cd /使用者家目錄
# mkdir backup
# cd backup
# vi web_autobackup.sh
 
五、在web_autobackup.sh中編修內容如下
# !/bin/sh
#
echo off 
echo '本機備份' 
    nowdate=`date +%Y%m%d`
    cd /使用者家目錄/backup
    tar zcf www_backup_"$nowdate" /var/www
    tar zcf mysql_backup_"$nowdate" /var/lib/mysql
# 
echo off 
echo '遠端備份' 
cd 用戶端目錄
sftp IP <<EOC 
cd 伺服器端目錄
put www_backup_$nowdate
put mysql_backup_$nowdate
bye 
EOC
 
六、透過指令【sh -x 要執行的shell script檔案】測試指令檔案沒有寫錯
#sh -x web_autobackup.sh
 
七、透過工作排程管理工具新增指定的工作排程
1.列出目前的所有排程
#crontab -l
2.新增排程
#crontab -e
3.新增排程紀錄
格式:\[分鐘\] [小時] \[日期\] [月份] \[星期\] [要執行的命令]
範例:30 1 * * * hwclock -w
每天1:30分執行一次電腦硬體時間校正的動作,【*】表示不指定
※若要執行的命令有包含到目錄,必須要用絕對路徑
 
在此網頁備份希望在每天0:10執行備份指令,則排程設定如下
10 0 * * * /備份script目錄/web_autobackup.sh
 
八、重新啟動工作排程的服務
#/etc/init.d/cron restart

2019年7月3日 星期三

[helpyourdata@qq.com].actin 又中勒索啦...

[helpyourdata@qq.com].actin

幾乎三天兩頭都在用的Windows File Server,這兩天要翻找古老的文件才被發現中了檔案勒索...
不過也很奇妙的是加密了快一個月都還沒被發現,而且已加密的檔案目前還不多
我猜應該是因為那台Server只有2G記憶體裝Windows Server又裝了一堆伺服器服務,根本沒多餘的資源跑加密程序吧...而且檔案太多沒辦法短時間跑完,記得當初只是Copy Paste整個D槽就跑了一個禮拜有🤣🤣🤣

東西是有放NAS的同步備份做異地備援,是不怕東西不見...只是要整台系統重灌再尻一次D槽很花時間就是了...

不過最後還是先拔網路關機,然後被催著繼續趕專案去了~
"有空再做的事情"再度+1

每次被迫抽身臨時處理這些事情的時候總是會想到
"infrastructure-as-code" 對於某些公司或環境來說根本遙不可及...
問題從來不是有沒有人力/資源去做這件事情,只是看大家夠不夠重視,用嘴巴講自動化說不要寫hard code,卻不願意正視技術債問題...

其實我一直不是很懂老闆的思維,以前曾經跟他談過的3個問題(薪資、技術債、歷史包袱),那時候他說後面兩個他覺得不是問題... 可是就現況來看就是一直為了後面兩個問題不斷付出代價 (找不到Source Code、文件沒紀錄、要嘛沒有上版控要嘛一次五六種版本...) 當然這些公司得承擔額外的人時成本與加班費

不過他說的也沒錯...技術債跟歷史包袱對工程師來說可能真的不是問題,換家公司問題就沒了...

佛心老闆佛心公司 開來給人練功用的
有沒有人最近想要要轉換跑道的 歡迎入坑(咦?


回歸正題,通常公司中勒索的時候我都不會想去解密或是付錢解鎖,沒辦法真的有效處理完善,付錢解了一道鎖,結果同時又偷埋了其他有害的加密程序,勒索病毒還是預防勝於治療,平時就有多份異地備援機制才是最好的處理。

靠近小行星的太空郵差

靠近小行星的太空郵差 💡 你知道嗎? OSIRIS-REx從Bennu帶回太空沙 標籤:小行星, 樣本返回, OSIRIS-REx 📖 真相大揭密 NASA OSIRIS-REx 於 2020 年進入直徑約 490 米的近地小行星 Bennu...