作者: ken

安裝 MariaDB

No Comments
按 ctrl-c 中斷掉

預期直接按 ENTER 就能設定新的 root 密碼,但現在看來必須繞道而行了。

  • 先停止 mysqld 運行
  • sudo systemctl stop mysqld
  • 接著進入 mysqld 安全模式
  • sudo mysqld_safe –skip-grant-tables –skip-networking &注意 – – s 前是雙 dash)
    (註:若後續操作上不符預期,將其移回前景試試)
  • 以 root 身份,不用密碼登入
  • mysql -u root
  • 在 mysql 命令提示行下輸入:
  • SELECT user, plugin FROM mysql.user;
  • 查到 plugin 有筆 unix_socket 記錄,須刪除
  • UPDATE mysql.user SET plugin=””;(注意使用 ansi 字元雙引號)
  • 接著可以直接設定 root 密碼,也可登出再設定
  • UPDATE mysql.user SET password=PASSWORD(“your_new_password”) WHERE user=”root”;(注意使用 ansi 字元雙引號)
  • 最後清空,離開。
  • FLUSH PRIVILEGES;
  • EXIT;

備註:我們後續若安裝到 Ubuntu 所提供的 phpmyadmin 套件,安裝過程中會安裝 phpmyadmin 自己的資料庫,其需要 MariaDB root 的密碼是空白未設定的。因此使用者若不想略過那個步驟,那麼這邊的密碼就需設為空白或不去設它,等到 phpmyadmin 安裝成功後再回來設定 root 密碼。

接著終止剛剛執行的安全模式

  • 查看所有 mysql 的行程編號
  • ps aux | grep mysql
  • 終止所有 mysql 行程
  • sudo kill -9 PID1, PID2, … 如圖範例
  • 啟動資料庫
  • sudo systemctl start mysqld
  • mysql_secure_installation

最後,再一次執行 mysql_secure_installation 按照提示回答 y/n 即完成 資料庫的安裝。

依序是:設定 root 密碼,移除匿名使用者(y),禁止 root 遠端登入(y),
移除測試資料(y),重載權限表(y)。

欲操作管理 mysql 資料庫,可以直接使用它的 command line 模式,即下達:mysql -u “使用者名稱” -p

我們目前,只有一位使用者 root。爾後會需要新增使用者及其資料庫供 wordpress 使用。下篇文章,將安裝 PhpMyAdmin 的資料庫管理介面

注意:我們在前面有手動設定了 root 密碼,它會被記錄到 ~/.mysql_history,因此必須將它刪除。需習慣注意於密碼不能被 log 下來。下 truncate -s 0 .mysql_history

20211223 更新,變更資料庫存放路徑

  • 筆者想把它放到 ramdisk 上,簡述如下步驟。請參考這篇文章。
  • https://linuxhint.com/change_mysql_data_directory_ubuntu/
  • 1. 先查看相關路徑
  • sudo grep -R –color datadir /etc/mysql/*(注意 – -c)
  • 2. 終止 mariadb
  • sudo systemctl stop mariadb
  • 3. rsync
  • sudo rsync -avh –delete /var/lib/mysql/ /ram/mariadb/(注意 – -d)
  • 4. 修改 apparmor 設定
  • sudo vim /etc/apparmor.d/tunables/alias
  • 5. 追加一行
  • alias /var/lib/mysql/ -> /ram/mariadb/,
  • 6. 重啟 apparmor
  • sudo systemctl restart apparmor
  • 7. 修改 mariadb 組態
  • sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
  • 將 datadir 改成新的路徑
  • 8. 啟動 mariadb。完成。
  • 最後說明;聽說 mysql 是吃記憶體怪獸,或許是將那些索引到的 tables 都放到 memory,故沒理由資料庫檔案不快取到記憶體上。所以,將它放到 ramdisk 應是多此一舉了,也就是若如此,記憶體很可能就有兩份同樣的檔案,那麼便是浪費了。
  • 20231216 補充,
    設定檔至此處修改 /etc/mysql/mariadb.conf.d/50-server.cnf
    例如最大連線數預設是 100;若 nginx 執行緒設了上千可能也因此受限,一直以來都忽略掉 database 也該做點 fine-tune 了,細節再行谷歌。

Usage

20240109 更新

  • 結果用它用了幾年了現在才曉得這回事,
  • 簡單講,使用 phpmyadmin,建立新使用者後,會到權限處設定權限,眼瞔應該要尖一點,它一開始的設定頁面是全域的部份,也就是,該使用者相對於所有資料庫的權限;簡單講,當全不選才是。因為 wordpress 是以每個網站對應一個資料庫而非多個為基礎。若某網站被佔領了,則其他資料庫將會淪陷。
  • 所以,以筆者當前的能力,SOP 如是,
  • 第一步還是比照以前的設定方法後,
  • 接著下,
    REVOKE ALL PRIVILEGES ON *.* FROM ‘user’@‘localhost’;
    此舉並不會撤銷自己所擁有的資料庫,除非再接著明示取消自己的。
  • 並記得實際存取檢驗看看是否如預期。
  • 若欲回復在某資料庫上的權限,下,
    GRANT ALL PRIVILEGES ON some_db.* TO ‘user’@’localhost’;

Categories: Linux 架設網站

Tags: ,

PHP Code Snippets Powered By : XYZScripts.com