# 切換到放置 .sql 檔的目錄下, # 本例中, aa.sql 置於桌面 user$ cd 桌面 # 進入 su 模式 user$ sudo su # 匯入檔案 root# mysql -u root -p 資料庫名 < aa.sql
老灰鴨的筆記本
2026-01-26
【MySQL8】匯入大容量 .sql 檔
phpMyAdmin 只能匯入容量 2M 以內的 .sql 檔,若要匯入大容量 .sql,則需要以命令列操作
2026-01-25
【Metabase】設定委託 Gmail 定時發送通知信件
如果您設定的儀表板的數據是每日更新的,或是希望在您關心的某個數據發生較大的變化時(例如某日營業額突然暴量)通知您,就需要有台 mail server 寄送通知信件。
若您也沒有自己架設的 mail server,則可以申請 Gmail,設定 Metabase 委託 Gmail 寄送通知信件;Gmail 這項服務基本上是免費的,不過 Google 為了避免被用來惡意寄發垃圾信,所以有每日 500 封、且單封信件大小不可超過 10M 的限制。
登入 Google 帳戶
確認帳戶已啟用【兩步驟驗證】 → 在上方的搜尋框輸入【應用程式密碼】
為應用程式命名,在本例中,就叫做 metabase。
系統產生 16 字的密碼,複製/記下來。
以管理員登入 metabase → 點擊右上角的齒輪圖示 → 【管理員設定】
點擊【電子郵件設定】 → 【編輯配置】
寄送測試信,會寄到管理員的信箱。
拿 Metabase 現成自帶的範例儀表板實驗
打開 E-commerce Inshights 後,點擊儀表板右上角的 【分享】圖示 → 【訂閱】
可以從 Metabase 的使用者名單選擇要訂閱的人,也可以自己輸入非 Metabase 使用者 → 選擇發送頻率。
若是同一個儀表板,有不同的人在看,在【訂閱】所指定的收信者是各自獨立設定的。
例如:A 已訂閱了 E-commerce Inshights,B 在【訂閱】是看不到有哪些人已經訂閱了 E-commerce Inshights 的。
例如:A 已訂閱了 E-commerce Inshights,B 在【訂閱】是看不到有哪些人已經訂閱了 E-commerce Inshights 的。
2026-01-01
【Metabase】套用台灣地圖進行分析
參考資料 ----
Metabase 預設自帶 世界地圖 & 美國地圖,如果需要台灣地圖幫助我們進行資料分析,則要手動新增台灣圖資。
到 simplemaps 下載台灣的 GeoJSON 的檔案 -- 檔名 tw.json,瞄一下 json 檔的內容,包含了一級行政區,其中屬性 id, name 是我們需要的。
{
"type": "FeatureCollection",
"features": [
{
...
...
"type": "Feature",
"properties": {
"source": "https://simplemaps.com",
"id": "TWKIN",
"name": "Kinmen"
},
...
...
因為在【LinuxMint 22.2 安裝設定 MySQL 8.0 + phpMyadmin】這篇筆記中,我們安裝了 phpMyadmin,所以 LinuxMint 一併安裝了 Apache,其網站根目錄位置為 /var/www/html/,
將 tw.json 放置在 /var/www/html/ 下,然後在 Metabase 設定 tw.json 的 url,在本例為 http://localhost/tw.json
要注意的是:通常我們的資料庫中 縣/市 欄位並不是遵循 GeoJSON 的 ISO 名稱定義,所以需要做適當的轉換,例如:另外建一個對照用的 table。
對照資料表:city_geo +--------+--------+-------+ | id | 英文 | 中文 | +--------+--------+-------+ | TWKIN | Kinmen | 金門 | +--------+--------+-------+ | ... | ... | ... | +--------+--------+-------+
2025-12-31
【Metabase】新增一般使用者
點擊右上角的齒輪圖示
→ 管理員設定
Metabase 是以 e-mail 做帳號管理,輸入 user 的 e-mail 後,若您 或 貴公司有自己的 mail server,Metabase 就會寄送含該 user 的密碼的信件到 e-mail 的信箱;在本筆記中,因沒有架設 mail server,所以要手動記下 Metabase 自動產生的密碼。
===== 2026.01.25 =====
2025-12-28
【Metabase】LinuxMint22.2,設定為開機即啟動 Metabase 服務
參考資料 ----
相關筆記 ----
將 metabase.jar 移至 /usr/share/metabase/ 目錄
# 原本 metabase.jar 是放在 使用者家目錄下的 metabase 目錄內 [user]~$ cd metabase [user]$ sudo su [root]# groupadd -r metabase [root]# useradd -r -s /bin/false -g metabase metabase [root]# mkdir /usr/share/metabase [root]# cp metabase.jar /usr/share/metabase [root]# chown -R metabase:metabase /usr/share/metabase [root]# touch /var/log/metabase.log [root]# chown syslog:adm /var/log/metabase.log [root]# touch /etc/default/metabase [root]# chmod 640 /etc/default/metabase
建立 metabase.service 服務檔
[root]# cd /etc/systemd/system/ [root]# vim metabase.service # 輸入下述內容 [Unit] Description=Metabase server After=syslog.target After=network.target [Service] WorkingDirectory=/usr/share/metabase/ ExecStart=/usr/bin/java -jar /usr/share/metabase/metabase.jar EnvironmentFile=/etc/default/metabase User=metabase Type=simple StandardOutput=syslog StandardError=syslog SyslogIdentifier=metabase SuccessExitStatus=143 TimeoutStopSec=120 Restart=always [Install] WantedBy=multi-user.target :x 存檔離開
建立 syslog conf
[root]# vim /etc/rsyslog.d/metabase.conf # 輸入下述內容 if $programname == 'metabase' then /var/log/metabase.log & stop :x 存檔離開 # 重啟 rsyslog.service 以使 metabase.conf 生效 [root]# systemctl restart rsyslog.service
編輯 Metabase 的環境變數
[root]# vim /etc/default/metabase MB_PASSWORD_COMPLEXITY=strong MB_PASSWORD_LENGTH=8 # 要求最短的密碼字串長度 MB_JETTY_HOST=0.0.0.0 MB_JETTY_PORT=3000 MB_DB_CONNECTION_URI="jdbc:mysql://localhost:3306/metabase?user=metabase&password=密碼&verifyServerCertificate=false&allowPublicKeyRetrieval=true" MB_EMOJI_IN_LOGS=true # log 要不要有顏文字...這還蠻有趣的...若不要就填 false # any other env vars you want available to Metabase :x 存檔離開
設定 metabase 為開機啟動
# 先手動啟動 metabase.service [root]# systemctl daemon-reload [root]# systemctl start metabase.service [root]# systemctl status metabase.service # 觀察是否已啟動 # 另外再開瀏覽器, 看看是否能登入 metabase # 確定執行沒問題了, 就改為開機自動啟動 [root]# systemctl enable metabase.service
相關筆記 ----
2025-12-26
【Metabase】LinuxMint22.2 上,社群版(Community) 將系統資料移至大型資料庫 MySQL8
參考資料 ----
Metabase 自帶的系統資料庫為 H2,僅用於測試試用期間,若要轉為正式應用(production),官方強烈建議將系統資料移至大型資料庫。
建議版本為 MySQL 5.7.7(含) 或 MariaDB 10.2.2(含) 或 PostgreSQL 9.4(含) 以上;本筆記為 MySQL 8.0.44。
注意:避免同時做 Metabase 更新升級 及 資料庫移植
關閉 Metabase,目前我的練功主機是開終端機視窗,在家目錄以
[user]~$ java -jar metabase.jar
的指令啟動 Metabase
所以只要在瀏覽器的 Metabase 頁面登出,然後在終端機視窗 Ctrl+C 中斷 Metabase 即可。
備份 H2︰複製 metabase.db.mv.db 到另一個安全的目錄存放。
以 root 登入 phpMyAdmin
在 MySQL 新增 metabase 帳戶並建立同名資料庫 metabase。
注意:建議密碼自已設定,而不要由 phpMyAdmin 幫您產生,以免密碼中不知道有哪個字元踩到了雷!!目前已知的有 【@】、【:】、【/】、【?】、【#】,會造成 java 錯誤解析 URI 字串,若是一定要用時,則在組連線字串時,須將上述字元改成 URI 編碼,後面再進一步說明。
-- 重點在最後面的 "with grant option", phpMyAdmin 圖形界面似乎做不到賦予 grant 權限 GRANT ALL PRIVILEGES ON `metabase`.* TO 'metabase'@'localhost' with grant option;
執行移植指令
# 切換到 metabase.jar 所在目錄, 在本例為 [user]~/metabase/ [user]~/metabase$ export MB_DB_TYPE=mysql [user]~/metabase$ export MB_DB_CONNECTION_URI="jdbc:mysql://localhost:3306/metabase?user=metabase&password=密碼&verifyServerCertificate=false&allowPublicKeyRetrieval=true" [user]~/metabase$ java -DMB_DB_TYPE=mysql -DMB_DB_CONNECTION_URI="jdbc:mysql://localhost:3306/metabase?user=metabase&password=密碼&verifyServerCertificate=false&allowPublicKeyRetrieval=true" -jar metabase.jar load-from-h2 metabase.db # 注意檔名
前面提到,如果密碼非得要用那幾個特殊字元,則在組 java 的 JDBC 連線字串時,要改成 URI 編碼,如下:
@ → %40
: → %3A
/ → %2F
? → %3F
# → %23
@ → %40
: → %3A
/ → %2F
? → %3F
# → %23
因為有備份 H2,所以可以放心刪除 metabase 所在目錄下的 H2 檔案,以確認 metabase 存取的是 MySQL。
重新啟動 metabase
[user]~/metabase$ export MB_DB_TYPE=mysql [user]~/metabase$ export MB_DB_CONNECTION_URI="jdbc:mysql://localhost:3306/metabase?user=metabase帳戶&password=密碼" [user]~/metabase$ java -DMB_DB_CONNECTION_URI="jdbc:mysql://localhost:3306/metabase?user=metabase&password=密碼&verifyServerCertificate=false&allowPublicKeyRetrieval=true" -jar metabase.jar重登入 metabase,可以看到之前製作的儀表板都在。
相關筆記 ----
2025-12-21
【Database】LinuxMint 22.2 安裝設定 MySQL 8.0 + phpMyadmin
參考資料 ----
* 這篇筆記是從 Mint Linux 20.3 安裝設定 MySQL 8.0 + phpMyadmin 那篇更新過來的,所以只要能理解、看得懂,部份截圖就沿用 LinuxMint20 的了。😇
VMWare Workstation 開放個人免費使用了!😄
新建一台 VMWare Workstation 虛擬機
偷懶,這次仍是安裝 MySQL,作業系統為 LinuxMint 22.2 MATE, MySQL 8.0。
安裝完成後,設定 "更新管理員" 的 "軟體來源" -- 鏡像站改為國內 國家高速運算中心(https://www.nchc.org.tw/)。
安裝 vim(Mint 預設已裝 vi,這個適合 80 鍵鍵盤,老人家用不慣 😓)
~$ sudo apt install vim
暫時關閉防火牆
~$ sudo ufw disable # 確認防火牆沒有啟動 ~$ sudo ufw status
安裝 MySQL,Mint 會連帶安裝其他相關的套件
~$ sudo apt install mysql-server
安裝完成後,MySQL server 應該會自行啟動執行
# 下述 3 個指令只是順手筆記, 不執行 # 查詢 MySQL 狀態 ~$ sudo systemctl status mysql # 啟動 mysql ~$ sudo systemctl start mysql # 停止 mysql ~$ sudo systemctl stop mysql
安裝後,進行安全性設定
~$ sudo mysql_secure_installation
問答式設定,依指示回答,以下是老人家的設定,請依自己需求設定
是否要設定密碼強度規則?
補充說明:密碼強度2(最強) -- 8 個字碼以上,除了必須滿足中等強度外 + 不能有容易被聯想的字(ex: P@ssw0rd → 可聯想到 password),本來我想設最強,但嚐試了好幾次,都被判定不符合強度2 的規定,只好退而求其次,改選強度 1。
是否 "不允許" MySQL 的 root 從遠端登入 MySQL:我選 y
設定完成

打開本機的瀏覽器(預設是火狐Firefox),在網址列輸 入 http://localhost/phpmyadmin , 注意:不是 https
是否移除匿名使用者:我選 y
是否移除 test 資料庫(因為稍後設定 MySQL 時要指定 phpMyAdmin 啟動時預設連線的資料庫,所以先留著,不刪)
重新載入權限資料表:我選 y
如果重新執行 mysql_secure_installation,上述的步驟會略過一開始的【設定密碼強度】,若想完整重新執行 mysql_secure_installation,則需要先移除密碼強度套件 component_validate_password
# 剛安裝好 MySQL 時,預設的管理者帳號是 root,所以, 第 1 次以命令形式登入 MySQL,也不需要密碼 ~$ sudo mysql # 進到 MySQL, 提示字元變成 > -- SQL 指令沒有大/小寫分別,不過慣例上都會以大寫表示 -- (記得要加 分號 做為命令的結束) -- 查詢已安裝的元件 > SELECT * FROM mysql.component; +--------------+--------------------+------------------------------------+ | component_id | component_group_id | component_urn | +--------------+--------------------+------------------------------------+ | 1 | 1 | file://component_validate_password | +--------------+--------------------+------------------------------------+ 1 row in set (0.00 sec) -- 刪除密碼強度套件 > UNINSTALL COMPONENT 'file://component_validate_password'; -- 退出 mysql > EXIT
設定 MySQL 時區為台北(Taipei)
~$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf [mydqld] ... ... default-time-zone = '+8:00' :x 存檔離開
# 再次登入 MySQL ~$ sudo mysql -- 建立資料庫(順手筆記, 不執行) > CREATE 資料庫名稱; -- 列出目前 MySQL 已建立的使用者帳號(順手筆記, 不執行) > SELECT user FROM mysql.user; -- 新建一個使用者 admin, 給後續安裝的 phpMyAdmin > CREATE USER 'admin'@'localhost' IDENTIFIED WITH caching_sha2_password BY '密碼'; -- 預設的密碼格式為 caching_sha2_password -- 其他格式有:mysql_native_password, sha256_password, ... -- 不過官方還是推薦 caching_sha2_password -- 賦予 admin 最高權限 > GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION; > exit
注意:
安裝 phpmyadmin
~$ sudo apt install phpmyadmin # 若安裝過程有失誤 或 不滿意, 想重新跑設定步驟, 可執行 ~$ sudo dpkg-reconfigure phpmyadmin
因為這版的設定步驟跟之前不同,所以先選 <否>
再執行 dpkg-reconfigure phpmyadmin 重新設定

phpmyadmin 的帳戶改為我們在前面建立的 admin@localhost
目前,我們還沒有啟用(加密)安全連線,也無法從別的電腦訪問這個內網
為 MySQL 的 root 帳戶加上密碼
~$ sudo mysql -- SQL 指令沒有大/小寫分別,不過慣例上都會以大寫表示 -- (記得要加 分號 做為命令的結束) > ALTER USER 'root'@'localhost' IDENTIFIED WITH CACHING_SHA2_PASSWORD BY '新密碼'; -- 退出,密碼才能生效 > EXIT -- 從此之後登入 MySQL 就會要求您輸入密碼 ~$ sudo mysql -u root -p # 參數 -u 是要登入的使用者帳號 # -p 是稍後要輸入密碼 # 上面的指令按下 ENTER 後, 系統就會提示您要輸入密碼 # 另一種登入指令, 但不建議使用, 因為是將密碼以明碼方式顯示 # 注意: -p 跟密碼間沒有空格 # 但這麼一來, 您的密碼就顯示在命令列中, 旁人一覽無遺了 ~$ sudo mysql -u root -p密碼 # 登入 MySQL 後, 提示字元變成 > -- 檢視 root 帳戶 > SELECT user, host, plugin, authentication_string FROM mysql.user WHERE user='root'; +------+-----------+-----------------------+------------------------------------------------------------------------+ | user | host | plugin | authentication_string | +------+-----------+-----------------------+------------------------------------------------------------------------+ | root | localhost | caching_sha2_password | $A$005$__HLm.}1*#ZzXhae2kc4K7Cvfg7TR0UxCxBKY2y2Ji9qieVGaXzMWL4Fn9 | +------+-----------+-----------------------+------------------------------------------------------------------------+ 1 row in set (0.00 sec)
訂閱:
意見 (Atom)










































