美文网首页
MySQL账号安全控制

MySQL账号安全控制

作者: 笑笑东风 | 来源:发表于2019-02-13 21:44 被阅读0次

推荐账号安全设置


在数据库服务器上严格控制操作系统的账号权限
1) 锁定mysql用户
2) 账号独立使用,管理员账号和应用账号分开,不同应用账号分开
3) MYSQL 用户目录下,除数据文件目录外,其他文件和目录属主都改为root
4)对所有用户使用IP和HOSTNAME来限制

避免下列危险操作


尽量避免以root权限运行mysql
如果使用root用户启动数据库,则任何具有FILE权限的用户都可以读写ROOT用户的文件,这样会给系统造成严重的安全隐患。

删除匿名账号
建议删除匿名账号,或者对账号增加密码

给root账号设置口令
MYSQL安装后,root的默认密码为空,应立即修改

只授予账号必须的权限

使用强密码,避免密码明文

除root外,任何用户不应该有mysql库的user表的存取权限
如果普通用户具有修改mysql.user表的权限,则可以修改root及其高级别账号的密码。

控制账号权限


不要把FILE PROCESS SUPPER 权限授权给非管理员账号

FILE权限主要有以下作用:
A)将数据库的信息通过SELECT INTO OUTFILE 写到服务器上有写权限的目录下,作为文本格式存放。具有权限的目录就是启动MYSQL时的用户权限目录。
B)可以将具有读权限的文本文件通过LOAD DATA INFILE 命令写入数据库表,造成表中的敏感信息泄露



PROCESS权限有以下作用:
可以执行"SHOW PROCESSLIST"命令,查看当前所有用户执行的查询的明文文本,如果其他用户正在执行敏感脚本如更新账号,则会存在安全隐患。


SUPER权限有以下作用:
可以执行kill命令中止任何用户的进程。


禁用LOAD DATA LOCAL
LOAD DATA LOCAL命令运行将本例文件加载到数据库中,存在安全问题,可以使用--local-infile=0来从服务器端禁用LOAD DATA LOCAL命令。


DROP TABLE 命令不会回收表的相关访问权限
当删除表时,其他用户对表的权限并没有被收回,如果创建同名的表,则这些用户对新表的权限会自动赋予,造成权限外流。


REVOKE 命令漏洞
如果用户被多次赋权,然后对用户使用REVOKE操作取消权限时,可能不能将多次赋予的权限一次全部REVOKE完成。因为多次赋权后,可能被认为多组单独的权限,REVOKE时不会依次进行清理

使用SSL确保网络传输安全


使用SSL来确保数据在网络传输过程中不给截取和窃听
SSL协议提供的服务有:
A)认证用户和服务器,确保数据发送到正确的客户机和服务器
B)加密数据以防止数据中途被窃取
C)维护数据的完整性,确保数据在传输过程中不会被改变

MySQL加密算法增强


MYSQL中密码加密相当于两次SHA1夹杂一次unhex方式:
SELECT CONCAT('*',UPPER(SHA1(UNHEX(SHA1('my@123'))))),PASSWORD('my@123');
+------------------------------------------------+-------------------------------------------+
| CONCAT('*',UPPER(SHA1(UNHEX(SHA1('my@123'))))) | PASSWORD('my@123')                        |
+------------------------------------------------+-------------------------------------------+
| *F1B060F1AFDAA276FB109607A6D0A701C19C0314      | *F1B060F1AFDAA276FB109607A6D0A701C19C0314 |
+------------------------------------------------+-------------------------------------------+

在MYSQL 5.6版本前,binlog日志中和用户密码相关的操作是不加密的,在MYSQL 5.6版本中进行了加强,但在搭建复制时仍需要使用明文密码。

相关文章

  • MySQL账号安全控制

    推荐账号安全设置 避免下列危险操作 控制账号权限 使用SSL确保网络传输安全 MySQL加密算法增强

  • MySQL 安全控制

    DCL(Data Control Language 数据库控制语言) 用于数据库授权、角色控制等操作 GRANT ...

  • ansible使用sudo来执行命令

    使用场景: 为了安全,sudo账号(本文章为admin)不可以ssh 其他账号(本文章为mysql)可以su - ...

  • mysql账号管理

    前言 为了数据安全,需要对mysql创建不同的账号,分发到相关人员手中,以账号来限制数据的操作权限。 创建账号 首...

  • MySQL 安全机制

    MySQL 安全控制 DCL(Data Control Language 数据库控制语言) 用于数据库授权、角色控...

  • MySQL 安全机制

    MySQL 安全控制 DCL(Data Control Language 数据库控制语言) 用于数据库授权、角色控...

  • MySQL 安全机制

    MySQL 安全控制 DCL(Data Control Language 数据库控制语言) 用于数据库授权、角色控...

  • Navicat访问mysql

    一、进入控制台,网络和安全->安全组->配置规则->添加安全组规定,将MySQL监听端口开放即可: 1、登录mys...

  • CentOS7下MySQL数据库插入中文显示问号问题解决方案

    1.进入MySQL控制台 PS:root为数据库账号 2.输入密码 3.查看当前MySQL运行状态 4.查看编码信...

  • MySQL数据库开启远程连接(云服务器ubuntu)

    1、配置安全组 控制台>>>配置安全组>>>默认安全组放通全部端口 2、用户切换到root 3、安装MySQL 4...

网友评论

      本文标题:MySQL账号安全控制

      本文链接:https://www.haomeiwen.com/subject/pmejeqtx.html