Ubuntu MySQL 8.0

      在〈Ubuntu MySQL 8.0〉中尚無留言

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *