mysql 逃兵筆記


有關資料庫系統, 我是大外行; 不過在 Linux 下, 很多工具都需要用到 mysql, 例如各種 wiki 軟體, 與各種 blog 軟體等等, 因此不得不學一點簡單的 mysql 指令。 這篇筆記主要是為和我一樣的讀者寫的: 並不想認真學 mysql, 只是想知道一些基本設定。

初次使用

重要! mysql 的密碼若含有除號字元 (/) 那麼在設定 drupal 時可能會出問題!

Mysql 的管理員也叫做 root; 但它跟 linux 系統的 root 沒有關係。 第一次使用時, 可以這樣設定 mysql 管理員的密碼:

        mysqladmin -u root password '給你猜'

日後要更改 root 的密碼: mysqladmin -u root -p password 然後照著提示先回答舊密碼、 再回答兩次新密碼即可。 也請參考 MySQL Change root Password。 要修改一般用戶的密碼, 可以用 root 帳號登入 mysql, 並下 mysql 指令 set password for greg@localhost=password('不告訴你'); 詳見 SET PASSWORD Syntax。 如果忘記 root 的舊密碼, 就有點麻煩了

安裝好之後, 強力建議執行 mysql_secure_installation 以便減少 mysql 對外曝露的風險面。

試車:

  1. 執行 mysql -u root -p 回答密碼, 登入 mysql。
  2. 在 mysql 內, 下 \h 救助, 發現可以下 \s 查詢系統狀態。 注意兩個欄位: current user 是 root@localhost ; 而 current database 則是空白。
  3. show databases; 看到兩個資料庫, 其中的 mysql 就是 mysql 的系統資料庫, 重要的系統資料都放在這裡。 於是 use mysql (注意這裡不必有分號), 並再次下 \s, 發現 current database 欄位變成 mysql。
  4. show tables; 看到十幾個 tables 表格, 其中有一個 table 叫做 user。
  5. select * from user; 發現螢幕太亂了, 改下 select Host,User,Password from user; 只顯示三個 fields 欄位
  6. 再按 ^d (或打 \q) 離開 mysql, 回到 shell 底下。

一些常識

資料檔放在那裡? /var/lib/mysql/ 包含密碼檔也放這裡。

一般要用到 mysql 的套件, 可能會問以下問題:

  1. 資料庫名稱?
  2. mysql 的用戶名稱?
  3. 資料表格名稱前面統一加的字串?

這三個東西, 都可以任意自訂, 也未必要相同。 以 xoops 為例, 資料庫名稱可以是 xoops_db, 用戶名稱可以是 xoops_admin, 資料表格名稱前面統一加的字串可以是 xoops_ 。 不過我自己為了容易記憶 (如果你管很多部電腦, 每部電腦都裝很多需要使用 mysql 的套件, ...) 通常前兩者都用套件名稱 (例如 xoops); 第三項則用套件名稱加底線 (例如 xoops_)

建立帳號, 建立資料庫

例一: xoops

比方說要安裝 xoops 吧。 以下指令建立一個專門給 xoops 使用的帳號:

        GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON xoops.* TO
        'xoops'@'localhost' IDENTIFIED BY '不要照抄';
    

然後按 ^d 離開 mysql, 回到 shell 底下; 再重新用 xoops 的帳號登入: mysql -u xoops -p 進入 mysql 之後, 下 create database xoops; 於是大功告成。

例二: mediawiki

mediawiki 也用到 mysql。 最簡單的方式是: 把 mysql 的 root 帳號密碼填入 mediawiki 的設定選單當中, 讓它自己去建立它需要的資料庫。

附帶一提: ConfirmEdit 擴充套件安裝後, 除了照文件設定之外, 還需要把 $wgCaptchaTriggers['edit'] = false; 這句的 false 改為 true 才會生效。

刪除帳號, 刪除資料庫

有些時候, 軟體安裝過程沒那麼順利, 偶爾會需要砍掉重練。 如果一套軟體用到 mysql, 那麼當你需要砍掉重練的時候, 可能也會想要同時把它所建立的 mysql 帳號與資料庫一併刪掉, 回復到最原始 (所有資料完全歸零!) 的狀態。

例如要刪除一個名為 zenphoto 的資料庫, 可以先用 zenphoto 資料庫管理員的帳號或 root 帳號登入, 然後: drop database zenphoto

然後如果要把 zenphoto 資料庫的管理員 (比方說叫做 zp_admin 好了) 刪掉, 可以這樣: drop user zp_admin

相關文章

  1. Basic Setup of MySQL in GNU/Linux
  2. Uninstall MySQL from Ubuntu 16.04