狀況概述
今天登錄在騰訊雲服務器上搭建的 MySQL 數據庫,發現數據庫被黑了,黑客提示十分明顯。mysql
MySQL 中只剩下兩個數據庫,一個是information_schema
,另外一個是黑客建立的PLEASE_READ
,其中有一張info
表,內容以下:sql
Info
: Your DB is Backed up at our servers, to restore send 0.2 BTC to the Bitcoin Address then send an email with your server ip
Bitcoin_Address
: 1F33LEJjdphD6YpaonNCHejwLcgkgDGQW9
Email
: mysqldata@mail2tor.com
顯然,我這是遇到比特幣敲詐了。個人數據在別人的服務器裏安然的躺着,須要向黑客支付 0.2 比特幣纔有可能恢復。按照當前的匯率,0.2 比特幣大約爲 1400 人民幣,這是我第一次遇到網絡敲詐,金額還不小。數據庫
所幸數據庫裏並無值錢的數據,就當是送給黑客了,不過 數據庫安全問題 引發了個人注意。vim
安全措施
MySQL 中只剩下兩個數據庫,一個是information_schema
,另外一個是黑客建立的PLEASE_READ
,其中有一張info
表,內容以下:centos
Info
: Your DB is Backed up at our servers, to restore send 0.2 BTC to the Bitcoin Address then send an email with your server ip
Bitcoin_Address
: 1F33LEJjdphD6YpaonNCHejwLcgkgDGQW9
Email
: mysqldata@mail2tor.com
顯然,我這是遇到比特幣敲詐了。個人數據在別人的服務器裏安然的躺着,須要向黑客支付 0.2 比特幣纔有可能恢復。按照當前的匯率,0.2 比特幣大約爲 1400 人民幣,這是我第一次遇到網絡敲詐,金額還不小。安全
所幸數據庫裏並無值錢的數據,就當是送給黑客了,不過 數據庫安全問題 引發了個人注意。服務器
安全措施
因爲缺少必要的安全措施和備份機制,數據庫中原有的數據均已丟失。爲了恢復到 MySQL 初始的狀態,從新安裝了 MySQL 數據庫,而且從新建立原先存在的數據庫,同時,爲了防止再次被黑客入侵,對 MySQL 進行了一些安全配置。網絡
針對此事項,建議作如下調整,以防範黑客攻擊:socket
一、服務器的管理員密碼具有必定複雜度,建議使用字母、數字、字符組合的密碼。post
二、服務器關閉遠程訪問(或關閉外網的遠程訪問),調整遠程訪問默認的端口號。
三、mysql的root用戶密碼具有必定複雜度,建議使用字母、數字、字符組合的密碼。
四、mysql不容許任意遠程端鏈接,建議僅對協同系統所在的IP地址放開鏈接。
五、mysql不使用默認的3306端口,建議修改成其餘端口。(mysql的配置文件:Windows爲my.ini、Linux爲my.cnf,修改其端口號)
修改my.cnf端口
vim /etc/my.cnf
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
port=3389
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
以上紅色處爲新增的端口設置信息
六、mysql設置定時備份,並將數據備份包備份在異機(或異地)。
快快騰出您的寶貴時間,落實以上幾點,爲您的數據庫保駕護航!
-------------------------------------------------------------------------------
yum 和 rpm安裝mysql完全刪除
一、yum方式安裝的MySQL
$ yum remove mysql mysql-server mysql-libs compat-mysql51
$ rm -rf /var/lib/mysq
$ rm /etc/my.cnf
查看是否還有mysql軟件:
$ rpm -qa|grep mysql
若是存在的話,繼續刪除便可,刪除方式:yum remove + 【名字】。
二、查看系統中是否以rpm包安裝的mysql:
[root@localhost opt]# rpm -qa | grep -i mysql
MySQL-server-5.6.17-1.el6.i686
MySQL-client-5.6.17-1.el6.i686
a)卸載mysql
[root@localhost local]# rpm -e MySQL-server-5.6.17-1.el6.i686
[root@localhost local]# rpm -e MySQL-client-5.6.17-1.el6.i686
b)刪除mysql服務
centos7版本如下用如下命令:
[root@localhost local]# chkconfig --list | grep -i mysql
[root@localhost local]# chkconfig --del mysql
centos7版本以上用如下命令:
systemctl list-dependencies mysql
下一步不知道了。。。
c)刪除分散mysql文件夾
[root@localhost local]# whereis mysql 或者 find / -name mysql 兩個都試一下
mysql: /usr/lib/mysql /usr/share/mysql
清空相關mysql的全部目錄以及文件,逐一刪除
rm -rf /usr/lib/mysql
rm -rf /usr/share/mysql
rm -rf /usr/my.cnf
總之刪到經過上面兩種命令查不出來任何有關mysql的東西
經過以上幾步,mysql應該已經徹底卸載乾淨了。
安裝mysql
1. 獲取rpm包
rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
2. 安裝
yum -y install mysql-community-server
安裝完成
3. 啓動mysql服務
#加入開機啓動
systemctl enable mysqld
#啓動mysql服務進程
systemctl start mysqld
#查看mysql狀態
systemctl status mysqld
4. 初始化
#初始化,執行命令,重置密碼
mysql_secure_installation
#會依次出現如下問題。
Set root password? [Y/n]
是否設置root用戶的密碼 (y後【設置登陸密碼】)
Remove anonymous users? [Y/n]
是否刪除匿名用戶 (y)
Disallow root login remotely? [Y/n]
是否禁止root遠程登陸 (n)
Remove test database and access to it? [Y/n]
是否刪除test數據庫(y)
Reload privilege tables now? [Y/n]
是否從新加載受權信息 (y)
5. 建立遠程登陸的用戶
# 先進入mysql
mysql -u root -p
# 受權(root用戶)遠程鏈接權限(不建議)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '遠程登陸密碼' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# 使用單獨的遠程登陸用戶(推薦)
GRANT ALL PRIVILEGES ON *.* TO '新用戶名'@'%' IDENTIFIED BY '遠程登陸密碼' WITH GRANT OPTION;
FLUSH PRIVILEGES;
good luck!