Pages

顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

2023年5月4日 星期四

mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS

 mysqldump命令:


  导出数据库:mysqldump -h ip -u root -p dbname > db.sql;

  导出数据库中的某个表:mysqldump -h ip -u root -p dbname tablename > tablename.sql;


错误提示:

  mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS


原因:


  因为新版的mysqldump默认启用了一个新标志,通过 --column-statistics=0 来禁用他


解决方法:

  mysqldump --column-statistics=0 -h 192.168.0.1 -u root -p dbname > db.sql;

2023年4月29日 星期六

CentOS7 安裝防毒軟體 ClamAV

 出處:https://blog.xuite.net/tolarku/blog/543961253-CentOS7+%E5%AE%89%E8%A3%9D%E9%98%B2%E6%AF%92%E8%BB%9F%E9%AB%94+ClamAV

雖然我感覺不出來在 Linux 一般系統裡安裝防毒軟體的作用,但在某些應用有可能被外部使用者更改檔案,且資安要求需要安裝所以就會在 CentOS 裡安裝 ClamAV ,之前寫過一篇「Linux 系統安裝防毒 - ClamAV」但後來在套用指令發現綴詞太多,於是再寫一篇快速應用,只要簡單貼上下面指令,就能在 CentOS 裡配置防毒軟體 ClamAV。

 安裝套件庫 EPEL Repository
sudo yum install epel-release -y

安裝防毒軟體
sudo yum install clamav clamd -y
會安裝:clamav、clamd 及 clamav-db

設定 selinux
sudo setsebool -P antivirus_can_scan_system 1

啟動服務 clamd
(CentOS 6) sudo chkconfig clamd on; sudo service clamd start
(CentOS 7 )sudo systemctl start clamd 

若病毒碼未更新會跳出這個警告訊息
Starting Clam AntiVirus Daemon:
LibClamAV Warning: **************************************************
LibClamAV Warning: *** The virus database is older than 7 days!                         ***
LibClamAV Warning: *** Please update it as soon as possible.                              ***
LibClamAV Warning: **************************************************

增加台灣病毒碼更新資料庫 - 不增加也可以,但速度會差很多
sudo vi /etc/freshclam.conf
DatabaseMirror clamav.stu.edu.tw
DatabaseMirror db.tw.clamav.net

更新病毒碼
sudo freshclam

ClamAV update process started at Mon Nov 6 11:54:40 2017
WARNING: DNS record is older than 3 hours.
WARNING: Invalid DNS reply. Falling back to HTTP mode.
Reading CVD header (main.cvd): OK
Downloading main-58.cdiff [100%]
main.cld updated (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
Reading CVD header (daily.cvd): OK
WARNING: getfile: daily-21724.cdiff not found on clamav.stu.edu.tw (IP: 2001:e10:c41:eeee::1)
WARNING: getpatch: Can't download daily-21724.cdiff from clamav.stu.edu.tw
Trying host clamav.stu.edu.tw (120.119.118.1)...
WARNING: getfile: daily-21724.cdiff not found on clamav.stu.edu.tw (IP: 120.119.118.1)
WARNING: getpatch: Can't download daily-21724.cdiff from clamav.stu.edu.tw
WARNING: getpatch: Can't download daily-21724.cdiff from clamav.stu.edu.tw
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%]
daily.cvd updated (version: 24010, sigs: 1769510, f-level: 63, builder: neo)
Reading CVD header (bytecode.cvd): OK
Downloading bytecode-279.cdiff [100%]
(略)
Downloading bytecode-315.cdiff [100%]
bytecode.cld updated (version: 315, sigs: 75, f-level: 63, builder: raynman)
Database updated (6335834 signatures) from clamav.stu.edu.tw (IP: 120.119.118.1)

 

設定每日排程更新病毒碼 與 掃描特定目錄,當然也可以針對 root /
sudo vi /etc/crontab
# 1 1 * * * root /usr/bin/freshclam --quiet -l /var/log/clamav/freshclam.log
# 以 yum 套件方式安裝,不需要額外設定每日更新事件,他會自動在 /etc/cron.daily/freshclam 排程更新
1 2 * * * root /usr/bin/clamscan -r /target_directory

即時掃描某目錄,若掃描正常會在檔名後面顯示OK
sudo  clamscan -r  /www/webroot

最後會產出掃描結果
----------- SCAN SUMMARY -----------
Known viruses: 6330125
Engine version: 0.99.2
Scanned directories: 39
Scanned files: 2196
Infected files: 0
Data scanned: 2860.51 MB
Data read: 12931.74 MB (ratio 0.22:1)
Time: 629.235 sec (10 m 29 s)

MySql備份Trigger與StoredProcedure

預設的mysqldump備份出來的sql檔案,是不包含StoredProcedure,但是包含Trigger指令,因此我們如過發現資料庫中有StoredProcedure的話,需要透過下方的指令,將StoredProcedure備份出來。

mysqldump -h 127.0.0.1 -u root -p -n -d -t --routines --triggers example > example.sql

MySQL指定使用utf8編碼匯入資料

 在mysql匯入SQL檔案時,如果遇到亂碼問題,可透過指定編碼的方式,將資料正確匯入。

 

 mysql -u root -p --default-character-set=utf8 example < example.sql

MySQL匯出Binary檔案資料

當使用mysqldump匯出資料庫檔案時,若有些欄位是直接將檔案儲存進去,在匯入資料庫時會導致失敗,因此需要透過以下指令將資料庫匯出後,才能在其他台mysql主機上匯入。

 

1. 使用--hex-blob匯出資料庫檔案

mysqldump -u root -p --hex-blob  example > example.sql
 

 2. 使用一般方式匯入資料庫檔案

mysql -u root -p  example < example.sql

2017年12月26日 星期二

CentOS 6.x安裝PHP 5.5 與MySQL 5.5



wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
yum --enablerepo=remi update -y
# update php5
yum --enablerepo=remi,remi-php55 update -y

yum clean all
yum remove mysql* php* mysql-libs-5.1.73-5.el6_6.x86_64
yum remove php*
yum --enablerepo=remi install mysql mysql-server mysql-connector-odbc mysql-devel libdbi-dbd-mysql
yum --enablerepo=remi install php php-fpm php-gd php-cli php-pdo php-mysql php-mcrypt php-mbstring php-gd php-tidy php-xml php-xmlrpc php-pear php-pecl-memcache php-eaccelerator php-bcmath php-sqlite php-xnmp php-ldap php-pear php-devel
yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql

vim /etc/php.ini
#修改php.ini中的屬性值
date.timezone = "Asia/Taipei"
short_open_tag = on

# Mysql 5.5 啟動與設定
vim /etc/my.cnf
#設定MySQL編碼
[mysqld]
.....
character-set-server=utf8
collation-server=utf8_general_ci

#編輯完後啟動Mysqld
service mysqld start
mysqladmin -u root password 'PASSWORDS'
mysqladmin --user=root --password reload
chkconfig --level 2345 mysqld on

service httpd restart

【Shell】Mysql Dump多個MySQL資料庫

透過vi寫一個備份MySQL多個資料的 db_backup.sh

db_backup.sh檔案內容:
#!/bin/sh
. ~/.bashrc

for DB in db1 db2 db3
do

DATE=`date +%Y-%m-%d`
HOST="xxx.xxx.xxx.xxx"
DEST=/db_backup/${HOST}_mysql_dump_${DB}_${DATE}.sql

### dump db
mysqldump --user=<username>--password=<password> --host=${HOST} --databases ${DB} > $DEST

### compress dump files
gzip $DEST
done
設定該Shell可以運行
chmod 755 db_backup.sh
./db_backup.sh

CentOS 6.9安裝Python 2.7與Azure CLI

在Azure上的CentOS 6.9安裝Azure CLI方式如下:
# 安裝Python 2.7
wget https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64//python27-libs-2.7.14-1.ius.centos6.x86_64.rpm
rpm -Uvh python27-libs-2.7.14-1.ius.centos6.x86_64.rpm
rm -rf python27-libs-2.7.14-1.ius.centos6.x86_64.rpm
vim /etc/bashrc
/etc/bashrc檔案內容新增
# 設定Python的Path路徑到bashrc的最後一行
export PATH=/opt/rh/python27/root/usr/bin/:$PATH
source /etc/bashrc
vim /etc/ld.so.conf
# 檢查ld.so.conf內容設定
include ld.so.conf.d/*.conf
include /opt/rh/python27/root/usr/lib64/
# 檢查ld.so.conf內容設定
ldconfig
python --version

# 安裝Azure CLI
rpm --import https://packages.microsoft.com/keys/microsoft.asc
sh -c 'echo -e "[azure-cli]\nname=Azure CLI\nbaseurl=https://packages.microsoft.com/yumrepos/azure-cli\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'
yum install azure-cli
# 測試 Azure CLI是否正常
az --version
# 依照相關信息進行登入
az login
# 列出目前登入帳號資料
az account list

CentOS 6.9上修改TimeZone方式

在Azure上的CentOS 6.9上修改TimeZone的方式如下:
vim /etc/sysconfig/clock
#下方為m原本的位置是在America,修改成您想要的位置。
Zone=“Asia/Shanghai”


接下來,透過以下Shell指令,我們可以將修改好的TimeZone設定生效。
cp /etc/localtime /root/old.timezone
rm -rf /etc/localtime
#要與TimeZone的位置一致
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#查看目前時間
date

2013年8月16日 星期五

chmod命令詳解

chmod用於改變檔或目錄的存取權限。使用者用它控制檔或目錄的存取權限。該命令有兩種用法。一種是包含字母和操作符運算式的文字設定法;另一種是包含數位的數位設定法。
1. 文字設定法
語法:chmod [who] [+ | - | =] [mode] 檔案名
命令中各選項的含義為:
操作物件who可是下述字母中的任一個或者它們的組合:
  表示使用者(user,即檔或目錄的所有者。
  表示同組(group)用戶,即與檔屬主有相同組ID的所有用戶。
  表示其他(others)用戶
  表示所有(all)用戶。它是系統預設值。
操作符號可以是:
  添加某個許可權。
  取消某個許可權。
  賦予給定許可權並取消其他所有權限(如果有的話)。
設置 mode 所表示的許可權可用下述字母的任意組合:
  可讀。
  可寫。
   可執行。
  只有目的檔案對某些用戶是可執行的或該目的檔案是目錄時才追加屬性。
  在檔執行時把進程的屬主或組ID置為該文件的文件屬主。
      方式us設置檔的用戶ID位,gs設置組ID位。
  保存程式的文本到交換設備上。
  與文件屬主擁有一樣的許可權。
  與和文件屬主同組的用戶擁有一樣的許可權。
  與其他用戶擁有一樣的許可權。
檔案名:以空格分開的要改變許可權的檔列表,支持萬用字元。
在一個命令列中可給出多個許可權方式,其間用逗號隔開。例如:
chmod g+ro+r example  % 使同組和其他用戶對文件example 有讀許可權。
2. 數字設定法
我們必須首先瞭解用數位表示的屬性的含義:0表示沒有許可權,1表示可執行許可權, 2表示可寫許可權,4表示可讀
許可權,然後將其相加。所以數位屬性的格式應為3個從07的八進位數,其順序是(u)(g)(o)。
例如,如果想讓某個檔的屬主有/二種許可權,需要把4(可讀)+2(可寫)=6(讀/寫)。
數位設定法的一般形式為:
語法:chmod [mode] 檔案名
指令實例:
chmod a+x sort   
即設定檔sort的屬性為:
 檔屬主(u 增加執行許可權
 與檔屬主同組用戶(g 增加執行許可權
 其他用戶(o 增加執行許可權
chmod ug+wo-x text
即設定檔text的屬性為:
 檔屬主(u 增加寫許可權
 與檔屬主同組用戶(g 增加寫許可權
 其他用戶(o 刪除執行許可權
chmod u+s a.out
假設執行chmoda.out的許可權為(可以用ls l a.out命令來看):
 rws--x--x 1 inin users 7192 Nov 4 14:22 a.out
 並且這個執行檔要用到一個文字檔shiyan1.c,其文件存取許可權為“–rw-------
  即該檔只有其屬主具有讀寫許可權。
   當其他用戶執行a.out這個程式時,他的身份因這個程式暫時變成inin(由於chmod
  命令中使用了s選項),所以他就能夠讀取shiyan1.c這個檔(雖然這個檔被設定為其他人不具備任何許可權),這就是s的功能。
  因此,在整個系統中特別是root本身,最好不要過多的設置這種類型的檔(除非必要)這樣可以保障系統的安全,避免因為某些程式的bug而使系統遭到入侵。
chmod ax mm.txt
chmod x mm.txt
chmod ugox mm.txt
以上這三個命令都是將檔mm.txt的執行許可權刪除,它設定的物件為所有使用者。

$ chmod 644 mm.txt
即設定文件mm.txt的屬性為:-rw-r--r--
 文件屬主(uinin 擁有讀、寫許可權
 與文件屬主同組人用戶(g 擁有讀許可權
 其他人(o 擁有讀許可權
chmod 750 wch.txt
即設定wchtxt這個檔的屬性為:-rwxr-x---
 檔主本人(uinin 可讀/可寫/可執行權
 與檔主同組人(g 可讀/可執行權
 其他人(o 沒有任何許可權



Linux nohup with out nohup.out

The command is below:

nohup some_command > /dev/null 2>&1&
for example:
nohup /jboss-eap-6.0/bin/standalone.sh -Djboss.server.base.dir=/jboss-eap-6.0/test -Djboss.server.log.dir=d:/webaplog/test > /dev/null 2>&1&