我们要把项目部署在云服务器的时候特别要注意mysql的部署
我是把项目部署在阿里云的,当你购买了云服务器时,要设置什么端口开放让别人能够访问
这是云服务器设置安全组的,也就是设置端口的,设置端口时要注意授权对象,这是表示允许什么主机能够访问这个端口,0.0.0.0/0 表示任何主机能够访问这个端口,要是你要设置前端项目端口可以设置成0.0.0.0/0 开放给所有人访问,但是你要是要开放一个端口比如你要用自己主机远程连接这个服务器,一般是开放22号端口的,那么你就要注意了,把这个授权对象改成你自己主机的ip地址,不要设置成0.0.0.0/0
当你想要在云服务器上部署一个mysql容器时,你想让你的主机连接mysql。操控mysql,后端项目也要连接mysql,那么这时你就要开放你的云服务器的端口连接mysql的,一般是3306,要是你把3306端口设置成0.0.0.0/0,开放给所有人,你部署的mysql服务器密码又设置的简单,就可能会被攻击, 当前情况系统不安全了,不建议您继续使用当前系统环境,就会这样
数据库中的数据就会被删光,只留下一张表,表中内容是
All your data is backed up. You must pay 0.0123 BTC to 1HcZssLejAL33y2EyBqwk3ot2vAiUtkoLG In 48 hours, your data will be publicly disclosed and deleted. (more information: go to http://iplis.ru/data02)
这是一个比特币勒索软件的警告消息。攻击者声称已经备份了您的所有数据,并要求您支付0.0123比特币(BTC)到一个特定的比特币地址如果不在48小时内支付,他们威胁要公开您的数据并将其删除
真的是惨痛的教训
解决方法
一
密码层面
1使用强密码策略,要求用户设置复杂且难以猜测的密码。
2定期更换密码,降低密码被破解的风险。
3禁用或限制默认的管理员账户,避免使用通用的或已知的管理员用户名root
1就是在创建mysql容器时设置密码时把密码设置复杂一点,不要123456这种的,带个字母
2就是可以定时更换你的数据库的密码,在MySQL中,可以用
ALTER USER '用户名'@'localhost' IDENTIFIED BY '新密码';
更新用户密码
3就是要在MySQL中禁用或限制默认的管理员账户(如 root 用户),你可以创建一个新的管理员账户并授予适当的权限,然后禁用或删除默认的 root 账户
#创建一个新的管理员账户
CREATE USER 'new_admin'@'localhost' IDENTIFIED BY 'StrongPassword!';
#授予新账户所有权限
GRANT ALL PRIVILEGES ON *.* TO 'new_admin'@'localhost' WITH GRANT OPTION;
#刷新权限使更改生效
FLUSH PRIVILEGES;
# 禁用root账户(可选)
RENAME USER 'root'@'localhost' TO 'root'@'localhost' DISABLE;
# 或者删除root账户(如果安全)
# DROP USER 'root'@'localhost';
二服务器端口,当你购买了服务器要开放端口的时候一定要注意
要注意设置什么主机能访问这个端口
mysql给用户分配地址权限:只允许特定的IP地址或网络段进行访问。
在MySQL中,您可以通过GRANT语句来给用户分配特定的访问权限,包括IP地址权限。
以下是一个示例代码,展示如何仅允许特定的IP地址或网段访问数据库服务器:
-- 假设您已经有一个用户'myuser'@'%',并希望限制其只能从特定的IP地址或网段访问
-- 从单独的IP地址(例如192.168.1.100)授予权限
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'192.168.1.100';
-- 从整个子网段(例如192.168.1.0/24)授予权限
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'192.168.1.%';
-- 刷新权限使变更生效
FLUSH PRIVILEGES;
请确保替换mydatabase为您想要授权的数据库名,myuser为您的用户名,以及IP地址或网段为您想要允许的地址。
注意:在实际操作中,应该避免使用GRANT ALL PRIVILEGES,而应该只授予必要的最小权限,以保持安全性