码迷,mamicode.com
首页 > 数据库 > 详细

MySQL账号安全设置

时间:2019-02-15 19:32:45      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:写入   清理   改变   local   mysql 5.6   use   授权   更新   bin   

========================================================================

推荐账号安全设置

在数据库服务器上严格控制操作系统的账号权限
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)维护数据的完整性,确保数据在传输过程中不会被改变

 

========================================================================

使用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账号安全设置

标签:写入   清理   改变   local   mysql 5.6   use   授权   更新   bin   

原文地址:https://www.cnblogs.com/gaogao67/p/10385502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!