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