Django博客优化 数据库安全

前言

你无法确定明天会发生什么,谁会想到我的数据库会被黑掉呢!
我从没想到我的博客小破站也会被黑到,但是由于我自身网站也只是开发阶段,一切数据也只是用来测试,倒没有什么损失,只是为了操作方便,设置了弱密码与权限,给了别人可乘之机.正好趁此整理一下关于数据库安全防护方面的知识点!

image.png
image.png

1.修改数据库登录密码

  • 方法1: 使用set password命令进入数据库修改
# 示例:
mysql> set password for 用户名@localhost = password('新密码');  
  • 方法2:使用mysqladmin在外部修改
# 示例:
mysqladmin -u用户名 -p旧密码 password 新密码  
  • 方法3:进入user表用update更改user
# 示例:
mysql> use mysql;  
mysql> update user set password=password('123') where user='root' and host='localhost';  
mysql> flush privileges;  

数据库密码很重要,不要为了方便使用弱密码!

2.修改用户权限

  • 创建库的同时,创建一个专门访问此库的用户,并限制权限
# 创建数据库
create database test charset=utf8;
# 创建新用户并控制权限
grant 你要赋予的权限 on test.* to '新用户'@"设置远程访问的主机地址" identified by '强密码';
# 为了方便操作,可赋予一个本机登录权限
grant 你要赋予的权限 on test.* to '新用户'@"localhost" identified by '强密码';
# 刷新缓存,让配置生效
flush privileges;
  • 查看授权
# 进入mysql库
MariaDB [(none)]> use mysql;
# 查看user表中的user与host查看权限
MariaDB [mysql]> select user,host from user;
+------+----------------+
| user | host           |
+------+----------------+
| root | %              |
| 新用户  | 访问ID |
| root | 127.0.0.1      |
| root | ::1            |
|      | localhost      |
| root | localhost      |
| 新用户 | localhost      |
| root | test     |
+------+----------------+

如果你发现你的root用户也同时具有访问任何库与任意主机远程地址登录的权限,需要根据自己需求来做限制,为了更高的安全性,我选择删除root的权限

  • 删除root远程登录访问新建库test的权限
delete from  user where host='%' and user = 'root';
  • 尝试使用新创建的用户与root登录新创建的库,做一下权限验证
mysql -u新用户 -p test
# 可以正常登陆,再尝试远程登录

3.修改数据库端口

数据库默认端口3306,为了加强安全性可以更改一个只有自己知道的端口,降低被破解访问的风险

  • 查看当前端口号
MariaDB [(none)]> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
  • 修改数据库配置文件,修改端口
vim /etc/my.cnf
# 主要修改port即可
[mysqld]
port=xxxx
# 若没有则添加
[client]
port=xxxx
  • 重启数据库
# 我这里使用的是mariadb
systemctl restart mariadb.service
  • 更改安全组(防火墙)
    如果你的数据库是云服务器记得开启新设置的数据库端口,如果是本地服务器并且设置了防火墙等安全规则也记得放开新端口

4.数据库备份

即使做了所有防护策略也不能避免意外发生,数据库备份是我们最后一道可靠的保障.
数据库备份有很多方法,可根据自己的业务需求选择全量备份,增量备份,冷备份,热备份等等等等,因为我的数据体量很小,只选择使用shell脚本配合mysqldump命令定时完成全站备份!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容