標籤:tps 命令列 version 主機名稱 bash shel 安裝 cat backup
MySQL5.6及以下的版本,安裝後預設內建一個test的資料庫,並且在MySQL5.6中,mysql.user使用者表中帶有使用者名稱為空白的使用者,等等的預設設定,這些都是不安全的,容易給他人利用的機會。所以需要在安裝MySQL後做些最佳化,加強MySQL資料庫的安全性。
作業系統版本、作業系統核心版本:lsb_release -a、uname -r
MySQL資料庫版本:mysql> select version();
MySQL資料庫安裝後預設的資料庫列表:mysql> show databases; MySQL資料庫安裝後預設的使用者列表:mysql> select user, host from mysql.user;
1)、刪除 除 [email protected] 及 [email protected]$hostname 外的其他賬戶:mysql> drop user ‘‘@‘localhost‘;mysql> drop user ‘‘@‘apptest‘;mysql> drop user ‘root‘@‘::1‘; # IPV6mysql> drop user ‘root‘@‘apptest‘;mysql> select user, host from mysql.user; # 驗證是否刪除成功2)、刪除test資料庫:mysql> drop database test;mysql> show databases; # 驗證是否刪除成功3)、修改預設的root密碼:mysql> set password for ‘root‘@‘localhost‘ = password("chiscdc");# 最好是通過下面的mysqladmin互動命令進行重新設定root密碼。shell> mysqladmin -uroot -hlocalhost -p -S /application/mysql/3306/mysql.sock passwordshell> mysqladmin -uroot -h<hostname> -p -S /application/mysql/3306/mysql.sock password
堅持最小化許可權的原則,對一個庫有只有一個專門的使用者有操作許可權;即在授權時,需要指定資料庫名、主機名稱,且主機名稱中不要包含任何萬用字元“%”。mysql> grant all privileges on jhmyTest.* to ‘test‘@‘192.168.231.9/255.255.255.0‘ identified by "chiscdc";mysql> flush privileges;mysql> show grants for ‘test‘@‘192.168.231.9/255.255.255.0‘; # 查看使用者權限
4、其他安全注意事項,防止MySQL資料庫密碼的泄漏:
禁止在shell命令列中輸入資料庫密碼:當在shell命令列中輸入純文字密碼時,會被Linux記錄到操作記錄檔案中(可以通過 history命令查看),從而導緻密碼泄漏。1)、通過mysqladmin命令修改mysql使用者密碼:錯誤做法,在pasword後直接跟密碼字串: shell> mysqladmin -uroot -p -S /application/mysql/3306/mysql.sock password "chiscdc" 正確做法:不在password關鍵字後寫任何字串,通過互動方式輸入新的密碼: shell> mysqladmin -uroot -p -S /application/mysql/3306/mysql.sock password
2)、通過mysql命令登入mysql:
錯誤做法,在-p後直接跟密碼字串: shell> mysql -uroot -pchiscdc -S /application/mysql/3306/mysql.sock
正確做法:不在-p後寫任何字串,通過互動方式輸入新的密碼: shell> mysql -uroot -p -S /application/mysql/3306/mysql.sock
3)、通過mysqldump命令進行定時備份資料庫:錯誤做法,在備份指令碼中寫明資料庫密碼,在-p後直接跟密碼字串:#!/bin/bash# Backup the MySQL Database Scriptsuser="root"passwd="chiscdc"mysqldump -u${user} -p${passwd} DBname > Dbname.sql 正確做法【官方文檔說是最安全的做法,點此查看官方文檔說明】:通過mysql_config_editor命令列工具將MySQL使用者名稱、密碼、socket等寫入單獨的檔案中(自動加密了),並且檔案賦予只有該檔案所屬使用者唯讀許可權(400),然後在指令碼mysqldump命令中通過--defults-file參數讀取使用者名稱密碼:shell> mysql_config_editor set --login-path=client --user=root --host=localhost --socket=/application/mysql/3306/mysql.sock --password shell> mysql_config_editor print --all設定後,在上面指定的host伺服器上登入mysql資料庫,也不需要輸入使用者名稱、密碼等。
新的備份指令碼,也不需要指定主機名稱、使用者名稱、密碼等:#!/bin/bash# Backup the MySQL Database Scripts mysqldump --all-databases > backup1.sql # End Of File
MySQL安裝後的基本安全最佳化