Linux 下的資料庫,以 MySQL 最為廣泛普遍。MySQL 在 2019年 發怖了重大的改變,釋出 8.0 的版本,功能更強,效能更好。
安裝 MySQL 8.0 Server
執行底下指令進行安裝
sudo apt -y install mysql-server
更改資料庫目錄
資料庫預設目錄在 /var/lib/mysql 中,需使用 sudo su 變更成 root 後才可進入目錄中查看。
sudo su cd /var/lib/mysql
要將資料庫預設目錄改到其它地方,請先停止 mysql 伺服器,再將 /var/lib/mysql 整個目錄 copy 到其它地方,比如 /data/server 之下。
然後必需設定寫入外部檔案的權限, 如下
然後更變 mysql 設定檔 mysqld.cnf,請由如下指令開啟設定檔
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
然後將 datadir 更改成如下
datadir = /data/server/mysql
最後再重新啟動 mysql
sudo systemctl restart mysql
遠端連線
mysql 8.0 預設無法使用遠端連線, 同樣更改設定檔 mysqld.cnf,將 bind-address 改為 0.0.0.0
bind-address = 0.0.0.0
加速效能
在 mysqld.cnf 最後手動加入如下新設定,可有效的加速 MySQL 效能
儲存後,重新啟動 mysql
sudo systemctl restart mysql
帳號管理
第一次登入
安裝完成後,第一次需在本機使用 root 登入資料庫,而且不用密碼
sudo mysql
新增帳號權限
為了安全性, root 預設只能由本機登入,不可以由網路登錄,所以想要由遠端網路登錄,需創建另一個帳號。請由上面的 root 登入 mysql 後,執行如下 SQL 語法增加一個新帳號。
唯讀權限
唯讀權限只能讀取不能寫入,指令如下。
use mysql;
grant select on cloud.* to '帳號'@'%'
刪除帳號
刪除帳號只要使用 drop 即可,如下
use mysql; drop user '帳號'@'%';
變更帳號密碼
變更帳號的密碼指令如下
use mysql; set password for 'root'@'localhost'='1234'; set password for '帳號'@'%'='1234';
使用新帳號登入
使用新帳號登入 MySQL
mysql -u 新帳號 -p
常用SQL 指令
底下是維護帳號常用的方法,請新以新帳號登入 mysql
select User, host from mysql.user;#查詢帳號
自動輸入密碼
每次在本機登入, 備份、 還原都要輸入密碼,實在很麻煩了。以下方法可以不用輸入密碼,不過這只適用Linux系統。
注意喔,只有在本機不用輸入密碼喔。如果在遠端不用輸入密碼,那還得了。
vim ~/.my.cnf
懶人包
使用如下 script 可以自動安裝 MySQL,完成設定,並建立登入帳號。
防止暴力破解
MySQL 登入沒有限制次數,所以也是駭客常暴力破解的對象。使用 fail2ban 進行封鎖是最佳的解決方案。
啟動 log
MySQL 預設不啟動登入 log,請開啟 mysqld.cnf
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
於最後加入如下設定
general_log = 1 general_log_file = /var/log/mysql/general.log
然後動啟 mysql
sudo systemctl restart mysql
啟重新啟動後,會自動在 /var/log/mysql 下產生 general.log
設定 logrotate
general.log 非常龐大,所以需要 logrotate(日誌輪替),把舊的 log 檔切掉、備份、壓縮,避免檔案一直變大。請在 /etc/logrotate.d 新增 mysql-general 檔案,然後設定如下
然後於 /etc/cron.d 裏增 cleanlog,設定如下每 6 小時打包並清空 log
最後重啟排程系統
sudo systemctl restart cron
設定過濾器
開啟 mysqld-auto.conf
jail.conf
開啟 jail.conf
sudo vim /etc/fail2ban/jail.conf
新增如下設定
最後重啟 fail2ban
sudo systemctl restart fail2ban
