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

留言

這個網誌中的熱門文章

儲存碟不要用主機板做RAID,Windows內建即可

透過CMD格式化磁碟或USB

PCMAN自動登入