發表文章

目前顯示的是有「linux」標籤的文章

Microsoft.Coreutils 是 Microsoft 官方推出的 Windows 原生 UNIX-style 核心工具集(Core Utilities)

安裝方式 powershell  winget install Microsoft.Coreutils 它讓你在 Windows 上可以直接使用 Linux / macOS / WSL 常見的命令列工具(如 cat、ls、grep、find、awk、sed 等),無需安裝 WSL 或 Cygwin。 基於 :Rust 實現的 uutils/coreutils 專案(GNU coreutils 的跨平台重寫)。 Microsoft 自行維護 Windows 優化版本,並打包成單一多功能執行檔(multi-call binary),每個工具都有對應的 .exe(例如 cat.exe、grep.exe)。 同時包含 findutils(find、xargs)和 GNU 相容的 grep。  

學習案例:首次登入的系統巡檢任務 (V2.0 增強版)

 # 學習案例:首次登入的系統巡檢任務 (V2.0 增強版) ## 情境介紹 (The Core Problem) 您是一位新上任的系統管理員,今天第一次登入公司的一台重要伺服器。您的首要任務不是修改任何東西,而是進行一次**非侵入式的系統巡檢**,全面了解這台主機的作業系統版本、帳號與網路配置、以及當前的運行狀態,並將結果彙整成一份結構化的報告。 ## 你的任務是: 1.  在你的家目錄下,建立一個用於存放本次巡檢報告的工作區。 2.  全面收集系統的**版本、帳號、網路、磁碟、登入及程序**等核心資訊。 3.  將收集到的原始數據,分門別類地儲存到一份報告檔案中。 4.  分析這份報告檔案,從中過濾並找出關鍵資訊。 5.  完成報告後,整理工作區。 --- ### 階段一:【建立工作區】為你的任務做好準備 * **問題:** 在開始收集資訊前,我需要一個乾淨的地方來存放我的報告。 * **操作與解說:**     ```bash     # 確認當前位置     pwd     # 建立名為 system_check 的資料夾     mkdir system_check     # 進入該資料夾     cd system_check     # 建立一個名為 report.txt 的空白報告檔     touch report.txt     # 確認工作區與檔案已就緒     ls -l     ```     * **階段成果:** 您已成功建立 `~/system_check/` 工作區及 `report.txt` 報告檔。 --- ### 階段二:【數據採集】將系統狀態輸出到報告中 * **問題:** 如何依序執行一系列檢查指令,並將它們的結果有條理地全部存入 `report.txt` 中? * **操作與解說:** 我們將使用 `>` (覆蓋) 來寫入第一筆資料,然後統一使用 `>>` (附加) 來新增後續所有資訊區塊...

學習案例:設定多人共用的安全 Web 目錄

# 實戰案例:設定多人共用的安全 Web 目錄 ## 情境介紹 (The Core Problem) 您是公司的系統管理員,目前正在管理一台 Web 伺服器。有兩位網頁開發者,`alice` 和 `bob`,他們需要共同開發一個位於 `/var/www/project_alpha` 的新網站。 **您的核心挑戰是:** 1.  `alice` 和 `bob` 都必須能夠在 `/var/www/project_alpha` 目錄中新增、編輯和刪除檔案。 2.  為了解決協作問題,`alice` 建立的檔案,`bob` 必須能夠編輯,反之亦然。 3.  系統上其他的無關使用者,絕對不能對此目錄有寫入權限。 4.  最終,網站伺服器軟體(例如 Nginx,通常以 `www-data` 使用者身份運行)需要能夠讀取這些檔案,以便將網頁呈現給訪客。 --- ## 階段一:【建立協作團隊與成員】 * **問題:** 「首先,我需要為開發者 `alice` 和 `bob` 建立系統帳號,並將他們納入一個名為 `webdevs` 的共同開發群組中。」 * **操作與解說 (以 `root` 或具備 `sudo` 權限的使用者執行):**     1.  **建立 `webdevs` 群組:**         ```bash         sudo groupadd webdevs         ```         * **`groupadd`**: 用於建立一個新的使用者群組。     2.  **建立使用者 `alice`,並將其主要群組設為 `webdevs`:**         ```bash         sudo useradd -m -s /bin/bash -g webdevs alice         ```         * **`us...

學習案例:設定 Ubuntu 伺服器的 SSH 金鑰安全認證

# 實戰情境:設定 Ubuntu 伺服器 (172.30.0.199) 的 SSH 金鑰安全認證 ## 概述 本教學模擬一個常見的內部訓練情境。指導者已備妥一台全新的 Ubuntu 伺服器,學員需從自己的 Ubuntu 電腦,透過私有網路連線至該伺服器,並完成從密碼登入到金鑰認證的安全升級。 ### **情境設定** * **指導者提供資訊:**     * 伺服器 IP 位址:`172.30.0.199`     * 初始登入帳號:`ubuntu`     * 初始登入密碼:(指導者提供) * **學員端 (您的電腦):**     * 作業系統:Ubuntu Linux     * 角色:跟隨本指南操作,連線至伺服器。 --- ## 步驟一:【前置作業】網路環境確認 在嘗試連線之前,必須先確認您自己的電腦與目標伺服器在網路上是「可溝通」的。 ### **1.1 檢查自身網路座標** * **問題:** 「在連線到別台電腦前,我得先知道我自己的 IP 位址是什麼,以及我所在的網路環境為何?」 * **操作 (在您的 Ubuntu 電腦上執行):**     ```bash     ip a     ```     * **解說:** 找出您電腦的網路卡(如 `ens18`, `eth0`),記下其 `inet` 後面的 IPv4 位址。 ### **1.2 確認與目標伺服器的連線** * **問題:** 「我知道我的位置了,那目標伺服器在網路上『活著』嗎?它的 SSH 服務有在聽嗎?」 * **操作 (在您的 Ubuntu 電腦上執行):**     1.  **測試網路是否通暢 (Ping):**         ```bash         ping -c 4 172.30.0.199         ```     2.  **測試 SSH 服務端口是否開啟 (Netcat):**   ...

VMWARE VM linux 擴充硬碟空間

可以參考 AWS 上面的文章  https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html  但 EC2 流程更簡單, 你在EC2調整後他自動幫你最佳化到好. Linux 內部他幫你處理了. VMWARE ESXi 就自己動手流程是 先調整 VMWARE 的VM硬碟空間 再去 LINUX 擴大硬碟分割區 然後把  FileSystem 放大 就好了...XD but 很重要的是, 因為這些有風險建議先備份免得出意外!!!  VMWARE ESXi Ubuntu Linux 放大VM硬碟 ESXi 把要放大硬碟的VM主機關機, 調整外部的硬碟容量設定大小(增大) 重開機, 從 ESXi console 登入 root 調整 可以先檢查目前的 disk 容量 # fdisk /dev/sda -l 重新掃描磁碟, ex: /dev/sda # echo 1 | sudo tee -a /sys/block/sda/device/rescan 延伸VM磁碟配置表 , 延伸後可以再檢查看看VM硬碟容量是否已經改變 #  growpart /dev/sda 3 重新讀取磁碟配置表 #  partprobe -s /dev/sda 延伸 LVM 的 Physical Extent (PE) , pvdisplay 可以檢查pv容量是否變化 #  pvresize -v /dev/sda3 延伸 LVM 的 Logical Volume (LV) * 完全延展 # lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv * 指定容量延展 # lvextend -L +100G /dev/ubuntu-vg/ubuntu-lv 延伸檔案系統 size , 可以用 df -lh 檢查容量 # resize2fs /dev/ubuntu-vg/ubuntu-lv

memcached UDP 放大攻擊之亂--Centos7 關閉UDP及只綁定127.0.0.1

圖片
昨晚機器流量異常....爆增流量 * 十小時前的新聞 https://www.ithome.com.tw/news/121543 "Majkowski建議不使用UDP的Memcached用戶應直接關閉該通訊埠,或確保自己的Memcached伺服器受到防火牆的保護,也提醒開發人員最好不要使用UDP,就算不得不用,也不應預設為啟用狀態,並應嚴格限制回應封包的大小,以免成為駭客執行DDoS攻擊的幫兇。" * 七小時前的新聞 https://www.networkworld.com/article/3258772/security/memcached-servers-can-be-hijacked-for-massive-ddos-attacks.html * memcached 伺服器參數 ConfiguringServer https://github.com/memcached/memcached/wiki/ConfiguringServer#commandline-arguments * 看一下啟動程序怎麼寫的 [root@dev ~]# more /usr/lib/systemd/system/memcached.service ...SKIP 略... [Service] Type=simple EnvironmentFile=-/etc/sysconfig/memcached ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS ...SKIP 略... * 看來改一下 memcached 的 OPTIONS 就可以 * -l 參數可以指定接收的 interface * -U 可以關閉 UDP port [root@dev ~]# cat /etc/sysconfig/memcached PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="-l 127.0.0.1 -U 0" ...

CENTOS7 安裝 NGINX 並請申請 Letsencrypt SSL憑證使用

圖片
CENTOS7 安裝 NGINX 並請申請 Letsencrypt SSL憑證使用 # 首先先看看網路上的教學安裝文章, 照著作把 nginx 安裝起來 https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7 # 然後安裝憑證, 這個 Letsencrypt 目前用程式安裝憑證 https://letsencrypt.org/ # 請依據制這裡的說明, 安裝程式及工具 https://certbot.eff.org/#centosrhel7-nginx # 先把 domain FQDN 對應 IP 設定好 # 執行憑證申請及安裝, 因為 Letsencrypt 有縣市 IP 及 Domain 所以申請盡可能一次就成功。 # 依據說明執行 [root@dev letsencrypt]# certbot --nginx Saving debug log to /var/log/letsencrypt/letsencrypt.log Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Which names would you like to activate HTTPS for? ------------------------------------------------------------------------------- 1: api.jangmt.com 2: dev.jangmt.com ------------------------------------------------------------------------------- Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 2 Obtaining a new certificate Perfor...

Nginx Ip Whitelist (白名單快速轉成 nginx 使用的清單)

圖片
Nginx Ip Whitelist by pass whitelist ref: http://www.kitploit.com/2016/11/fireaway-next-generation-firewall-audit.html # 白名單設定方式可以參考 stackoverflow 這一篇 https://stackoverflow.com/questions/13917866/nginx-ip-whitelist # 中文可以參考這一篇 https://www.centos.bz/question/nginx-ip-whitelist/ 想把白名單快速轉成 nginx 使用的清單, 但是又不想寫太多程式。 所以直接用 google spreadsheets 轉成 csv 功能 透過 linux shell script 轉換成為 nginx 可以使用的清單 在實際工作動作: 客服人員:編輯 spreadsheets 檔案 系統人員:白名單轉成檔案驗證,並 reload nginx 生效. ## ---------------------------------------------------- ## linux script ## ---------------------------------------------------- #!/bin/bash # 編輯網址 , google doc 權限設定控制 # 將 google doc 白名單取出成為 csv URL="https://docs.google.com/spreadsheets/d/{請改成你的網址}/pub?gid=0&single=true&output=csv" echo "w3m -dump '${URL}' > whitelist.csv" | sh # 備份原本的白名單 mv -f customer_ip customer_ip.bak echo "# $(date -R) update." > customer_ip # 去除註解 grep -v '#' "whitel...

Linux Performance 效能評估工具

圖片
這個文章說明了系統個連接點的效能評估工具與方式。 http://www.brendangregg.com/linuxperf.html netflix 工程師先透過 10 個工具在 60 秒告訴你,系統的效能摘要狀況... http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html 接下來要仔細的分析效能上面的問題,透過 Brendan’s Linux Performance Tools tutorial 的這一篇文章來解釋。 每個指令都是獨有專精的效能評估工具 例如 : perf https://perf.wiki.kernel.org/index.php/Main_Page 他是可以顯示CPU 上面資訊的計數器 及分析軟體、硬體的性能。 http://wiki.csie.ncku.edu.tw/embedded/perf-tutorial    成大資工WIKI 看起來就是折磨研究生的工具,但是工程師的好朋友。(泣...) 其他就慢慢研究,遇到再來使用了。

Bitnami 的預設安裝 VM 及容器服務

圖片
https://bitnami.com/   是一個提供預先安裝基礎建設及應用程式的服務網站,可以讓開發人員「初期」不用花太多心思再基礎建設上面,就可以用預先安裝好的服務。 所以先選你要的機器影像檔 VM https://bitnami.com/stack/nginx/virtual-machine 因為我用的是 Linux KVM 但上面只提供 .OVA 格式,所以需要轉換一下格式。 https://wiki.hackzine.org/sysadmin/kvm-import-ova.html   KVM: Importing an OVA appliance 然後就是設定 KVM 的 Machine 了!! (略) 設定好後,把 SSH 打開最重要的。 https://docs.bitnami.com/virtual-machine/faq/ 至於服務該如何使用,可以參考他的文件說明 https://docs.bitnami.com/virtual-machine/infrastructure/nginx/ 其他的操作,就和一般使用 Linux 是一樣的。很快速的你就可以有一個可靠的開發環境了。 最後,bitnami 會自動回傳統計資訊回他的網站,記得把他關閉。

STOMP/MQTT 通訊協定的測試心得(client/server)

圖片
STOMP 通訊協定的測試心得(client/server) STOMP 是啥東西?  STOMP 是 Simple (or Streaming) Text Oriented Message Protocol 的縮寫 主要提供一個可以操作的通訊界面,可以支援不同平台的的客戶端交換文字訊息。它屬於一個訊息導向的中介軟體。這個服務類似 HTTP ,並且架構於 TCP 上面。 ref: https://segmentfault.com/a/1190000004906137 功能示意圖 用來搭建 IM (即時通訊服務) 是很簡單好用的中介工具 https://segmentfault.com/a/1190000004906137  這裡有目前常見的訊息中介軟體的比較介紹 amqp mqtt or stomp http://blogs.vmware.com/vfabric/2013/02/choosing-your-messaging-protocol-amqp-mqtt-or-stomp.html 建議和 html5 websocket 一起看,比較容易理解它到底再做啥? P66 頁開始。 http://www.slideshare.net/peterlubbers/html5-real-time-and-websocket/94-Learn_More_HTML5_User_Groups 這裡有 function 功能規格說明 https://mq.java.net/4.4-content/stomp-funcspec.html 這個大概就是目前的官方網站了 https://github.com/stomp-php/stomp-php/wiki 這個服務主要構過 broker 來提供服務,目前 broker 的軟體有很多種可以提供。 broker -- STOMP Servers broker -- STOMP Servers 的列表,常用的。 https://stomp.github.io/implementations.html 我裡以 apache apollo 這套 activemq 的子專案,來做說明。 Apollo 1.7.1 版本,下載我是以 Linux 版來說明 http:...

Enom DNS 服務的動態 dns 更新

圖片
Enom DNS 服務的動態 dns 更新 圖跟內文無關 最近因為工作關係,租了一台韓國的 aws 主機來當 vpn 服務,想說 ip 也不想固定,弄個動態 ip 更新好了。我的 dns 主機商是 enom 他在網路上有很多的自動更新的 script。 先提供一個有趣的網站,這網站可以用命令列反查所在的對外 public ip 很適合用來寫程式。 https://ifconfig.co/ 命令列及 API 版本的 myip address 另外有一個網站 https://www.ipip.net/ 可以查詢每個 ip 的所在地,是一個很好用的服務。 另外也提供 api 接入的功能,可以很方便的接程式。 官方網站提供的程式,右方有各種平台用的。 http://www.enom.com/help/faq_dynamicdns.asp  下面是在 github 找到的,其實重點在 enom api server 提供的服務,每個程式只是包裝了一些個人化的需求。 Enom api server ENOMURL="http://dynamic.name-services.com" python version: https://gist.github.com/stef-levesque/11229362 shell version: https://gist.github.com/h0tw1r3/11405624 php version: https://github.com/mrubinsk/phpEnomUpdate/blob/master/phpEnomUpdate.php php 最簡單版本的 update. https://gist.github.com/agarzon/2431219 // -------------------------------------------- # php 版本的更新程式 [root@ip-172-31-12-22 enom]# cat /root/enom/ip-update.php #!/usr/bin/php /* Run this script every 5 minutes (or 1 hour, is up to...

CentOS7 Linux 安裝給 pokemon bot 使用的 proxy server

圖片
CentOS7 Linux 安裝給 pokemon 使用的 proxy server  Porxy 服務早期是因為網路頻寬小,通常在區網內把重複的流量用 proxy 來取代。 現在則變成一種可以欺騙 web server 客戶端來源 IP 的一個小技巧,有人用於當 bot 爬網站,有人用於分散流量抓迷片。而今天,我把它用來服務 pokemon bot client ,因為一個 bot 抓太慢拉!!! XDXD * 安裝及設定 Linux 的 Proxy 服務 # 安裝 squid yum install squid -y # 編輯設定檔 /etc/squid/squid.conf nano /etc/squid/squid.conf # 在這段之後 # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # # 放入下面三行規格, ip 請自行更動 acl mynet src 111.32.141.0/24 acl mynet src 111.32.141.0/24 http_access allow mynet # 啟動 systemctl restart squid  # 開機預設啟動 systemctl enable squid  # 確定 port 3128 是否工作 netstat -antlp | grep squid tcp6       0      0 :::3128        :::*         LISTEN      29062/(squid-1)   * 設定 pokemon bot , 這裡是以 Ar1i 開發的 PokemonGo-Bot 來當範例。 https://github.com/Ar1i/PokemonGo-Bot/tree/master/Builds-Only  Ar1i 幾乎每天都在發新的版本,也修正很多 bug ,目前用過感覺最好的 bot 。 ...

Pokemon GO 有很完整的社群開發論壇及完整的 API code

圖片
pokemon go 有很完整的社群開發論壇及完整的 API code,真是令人驚豔.. https://www.reddit.com/r/pokemongodev/ 不論原生公司喜不喜歡,在 github 上面一堆延伸開發的專案,且目前更新都很頻繁,大概三天就出一個版本了... 一開始是想要參考別人 API 怎麼寫的!!! 沒想到先看到 pokemon api , 各種版本都有, 少說有 6 種以上語言支持。 PoMG API by python 2.7 https://github.com/PokeAPI/pokeapi https://pokeapi.co/docsv2/ 然後就研究了一些 bot 在作啥麼....XDXD https://www.youtube.com/watch?v=MoYjVTbLWyo ------- pokemon go 預測雷達 , 很準. 有神獸出現時只要看 Found By Trainer: (Poke Radar Prediction) 才抓,其餘都是玩家來亂的。 https://www.pokemonradargo.com/ 上面這個可能樹大招風,所以有時後會關閉服務或不正常。可以使用。 https://pkget.com/  大家找寶貝 ------- PokeMon GO 進化計算機 , 及 pokemon 介紹. 哪些是神獸也可以參考這裡。 https://pokemon.gameinfo.io/tools/evolution-calculator?hl=zh_TW ------- pokemon go 官方的 PTC 帳號註冊(Pokemon Trainer Club) https://club.pokemon.com/us/pokemon-trainer-club/sign-up/ 可以註冊一個免洗帳號,避免 google account 外流的風險。 因為他的 google  登入需要填入你的 gmaill 帳密,這很有外流的風險。 ------- 很紅的 bot NecroBot , C# console for win ------- 最初的的 NecroBot 版本, 被自殺了。 https://github...

How disable the touchpad in Linux MINT (暫時關掉觸控板的功能)

圖片
用了 NB 最麻煩的就是手滑,不小心摸到觸控板。 找了一下,暫時關閉的方式。 使用 root 權限 , 執行 xinput lst 觀看目前系統上的輸入裝置 id 值 BarkleyMT ~ # xinput list ⎡ Virtual core pointer                     id=2 [master pointer  (3)] ⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)] ⎜   ↳ PixArt USB Optical Mouse                 id=11 [slave  pointer  (2)] ⎜   ↳ ETPS/2 Elantech Touchpad                 id=14 [slave  pointer  (2)] ⎣ Virtual core keyboard                   id=3 [master keyboard (2)]     ↳ Virtual core XTEST keyboard             id=5 [slave  keyboard (3)]     ↳ Power Button                           ...

Linux command 測試網路速度

Linux command 測試網路速度 原始碼 in https://github.com/sivel/speedtest-cli # 安裝及執行 wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py chmod +x speedtest-cli ./speedtest-cli # 執行範例 [root@dev dl]# ./speedtest-cli Retrieving speedtest.net configuration... Retrieving speedtest.net server list... Testing from TANet (111.111.11.111)... Selecting best server based on latency... Hosted by Chief Telecom (Changhua) [67.67 km]: 19.85 ms Testing download speed........................................ Download: 798.55 Mbit/s Testing upload speed.................................................. Upload: 185.07 Mbit/s

Postgresql 上面的「尿布、啤酒、星期五」,不用寫程式下行 SQL 就搞定

圖片
MADlib + postgresql 9.4 in Linux CentOS 7 MADlib®: Big Data Machine Learning in SQL for Data Scientists 啤酒、尿布、星期五 MADlib 在 postgresql 上面以是以 postgres 函式的型態來實現對於數據資料的操作 ,你可以透過這個以 plpython 語言寫的函式,直接操作原始數據轉存到新的資料庫當中,這個函式庫支援很多機器學習的演算法,可以很方便的分析數據. 目前提供的有底下這些,看起來應該有陸續發展的可能,因為已經被放到 Apache 基金會的子項目計畫內了...XDXD 功能: Classification 分類 Regression 回歸 Clustering 集群 Topic Modeling 主題模型 Association Rule Mining 關聯性規則 Descriptive Statistics 描述性統計 Validation 驗證 more... http://madlib.net/product/ 官方網站 http://madlib.net/ 我使用來安裝的版本是 CentOS Linux 7 ,但是安裝這個 LIB 前請先選擇一套支援的資料庫系統,這裡我用的是 Postgresql 9.4 的版本,安裝請參考這一篇: http://blog.jangmt.com/2016/03/postgresql-94-in-centos-linux-7.html 下載 http://madlib.net/download/ 安裝 [root@c7 ~]#    yum install madlib-1.8-Linux.rpm  -y 檢查是否裝了,安裝好後他的路徑放在 /usr/local/madlib/ [root@c7 ~]# rpm -qa | grep madlib madlib-1.8-1.x86_64 我使用 Single Node 的模式,系統需求:( HAWQ >= 1.2, Greenplum >= 4.2 or PostgreSQL >= 9.2 ) 在安裝後,這特 MADlib ...

將 CSV 檔案加上 UTF BOM 讓它可以在 Windows 被 EXCEL 正確的開啟沒有亂碼的問題

圖片
將 CSV 檔案加上 UTF BOM 讓它可以在 Windows 被 EXCEL 正確的開啟沒有亂碼的問題 在 UTF-8 文件中放置 BOM 主要是微軟系統的習慣。但是真的沒有必要帶拉!!!! http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom According to the Unicode standard, the BOM for UTF-8 files is not recommended: 圖片和內文不太相關 下面提供一種在 windows 上面,政治正確的解法。 XDXD // ======================================================== // 產生現在的秒數 $time_string = date("YmdHis"); // 寫入 utf8 with BOM function writeUTF8File($filename,$content) {     $f = fopen($filename, 'w');     fwrite($f, pack("CCC", 0xef,0xbb,0xbf));     fwrite($f,$content);     fclose($f); } $f = 'uploads/private/'.$time_string.'.csv'; $fdir = 'uploads/private/'; // 檔案不存在就先建立檔案 if (!file_exists($fdir)) {     mkdir($fdir); } writeUTF8File($f,$csv); echo 'CSV 輸出完成,請點選 連結 下載。 '; // ========================================================

mysql 中文亂碼的避免及 php mysql pdo 宣告取用方式

圖片
Mariadb 和 Mysql 都會有亂碼, 只要它預設編碼還是在 latin 的時還是一直會發生. 所以改成 utf8 編碼是一個對於東亞語系的文字,會比較方便。 UTF8 的介紹請看 wiki https://zh.wikipedia.org/wiki/UTF-8 xxx_bin (區分大小寫) xxx_general_ci (不區分大小寫) Collation 每個字符集的排序規則 http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html 在 mysql 資料庫中有兩個編碼系統 UCS2 及 UTF8 utf8 使用 1~3 bytes ,帶有 65536 個組合的編碼 utf32 與 utf8mb4 是完整的的 unicode ,差異在 utf32 固定 4 bytes ,而 utf8mb4 則是彈性使用 1~4 bytes 。 utf8mb4 從 MySQL 5.5.3 (released March 2010). 開始提供 目前預設的編碼系統為 xxx_general_ci (default) 為了中文語系使用不要出問題,建議修正如下: ----------------------------------------------------- # 修正 mysql 的設定檔 [root@c7 my.cnf.d]# more /etc/my.cnf.d/my-huge.cnf  [client] default-character-set=utf8mb4 [code] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci # restart mysql service # 檢查系統的編碼變數 ---------------------------- [root@c7 my.cnf.d]# mysql -u root -p Enter password: MariaDB [(none)]> SHOW VARIABLES WHERE Variab...