MySQL安裝後的基本安全優化

MySQL5.6及如下的版本,安裝後默認自帶一個test的數據庫,而且在MySQL5.6中,mysql.user用戶表中帶有用戶名爲空的用戶,等等的默認設置,這些都是不安全的,容易給他人利用的機會。因此須要在安裝MySQL後作些優化,增強MySQL數據庫的安全性。
  • 一、操做系統與MySQL的基本環境信息:
          操做系統版本、操做系統內核版本:lsb_release -a、uname -r
 
         
 
     

   MySQL數據庫版本:mysql> select version();html

    

    MySQL數據庫安裝後默認的數據庫列表:mysql> show databases;
      
    MySQL數據庫安裝後默認的用戶列表:mysql> select user, host from mysql.user;
   
  • 二、修正方法:
1)、刪除 除 root@localhost 及 root@$hostname 外的其餘帳戶:
mysql> drop user ''@'localhost';
mysql> drop user ''@'apptest';
mysql> drop user 'root'@'::1'; # IPV6
mysql> 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 password
shell> 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'; # 查看用戶權限
 

 

四、其餘安全注意事項,防止MySQL數據庫密碼的泄漏: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:sql

錯誤作法,在-p後直接跟密碼字符串: shell> mysql -uroot -pchiscdc -S /application/mysql/3306/mysql.sock

正確作法:不在-p後寫任何字串,經過交互方式輸入新的密碼: shell> mysql -uroot -p -S /application/mysql/3306/mysql.sockshell

 

 

3)、經過mysqldump命令進行定時備份數據庫:
錯誤作法,在備份腳本中寫明數據庫密碼,在-p後直接跟密碼字符串:
#!/bin/bash
# Backup the MySQL Database Scripts
user="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
相關文章
相關標籤/搜索