Mysql的安全管理

Mysql的安全管理

数据库安全可以从多个方面去进行防护

  1. 用户账户管理:创建用户并为其分配合适的权限,设置强密码,定期更换密码。
  2. SSL/TLS加密:通过启用SSL/TLS加密,可以加密MySQL的客户端和服务器之间的通信,以防止数据在传输过程中被窃取或篡改。为MySQL配置和使用有效的SSL/TLS证书。
  3. 防火墙保护:通过配置网络防火墙,限制对MySQL服务器的访问。只允许来自受信任的IP地址或网络的连接,并阻止不必要的外部访问。
  4. 打补丁:定期更新数据库软件,确保MySQL服务器和相关软件保持最新的安全更新和补丁。

账户权限管理

Mysql先会校验当前用户是否允许连接到服务器,比如User如果是 root@localhost,表明它只允许root用户本机连接到Mysql服务器。如果都不能连接到服务器也就没有后续的权限管理了。

Mysql权限管理则涉及到多个表以及配置。关键的几个表有:

  • mysql.user:该表存储了MySQL服务器上的用户账号信息,包括用户名、密码和权限等。

  • mysql.db:该表记录了数据库级别的权限信息,指定了用户对于特定数据库的访问权限。

  • mysql.tables_priv:该表存储了表级别的权限信息,指定了用户对于特定表的操作权限,如SELECT、INSERT、UPDATE、DELETE等。

  • mysql.columns_priv:该表存储了列级别的权限信息,指定了用户对于特定列的操作权限。

此外,还有其他一些系统表用于存储更细粒度的权限信息,如mysql.procs_priv用于存储存储过程权限、mysql.proxies_priv用于存储代理权限等。

User表说明:

(1) Host表示该用户可以登录的ip, 如果是localhost表示只能本机登录,不能远程登录,注意在实际开发中,我们只能让用户本机登录mysql
(2) User字段;用户名 ,说明在mysql中,一个完整的用户名是有User和Host组成比如 ‘root’@‘localhost’;
(3) Password:用户密码, 使用password函数加密的.

创建账户并授予权限

use mysql;
#创建账户
CREATE USER 'root'@'%'; 
#修改密码
ALTER USER 'root'@'%' IDENTIFIED with mysql_native_password by '123456'; 
#给角色授权
grant all privileges on *.* to "root"@"%";
#刷新权限
flush privileges; 
 
#修改主机
update mysql.user set host='具体要指定的主机ip' where user='root';
#刷新权限
flush privileges; 

查看密码认证插件

注意示例中的sql均为mysql8,在修改密码时可能会提示密码强度不够,注意

vi /etc/my.cnf

添加 这行代码 修改 MySQL的密码认证插件

default_authentication_plugin=mysql_native_password

以上为账户权限涉及到的一些操作,后续会补充防火墙以及具体密码认证插件的升级

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值