设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 站长学院 > MySql教程 > 正文

怎样消除MySQL账号的安全隐患

发布时间:2022-06-25 09:46 所属栏目:115 来源:互联网
导读:怎样消除MySQL账号的安全隐患: (1).给MySQL账号赋予其所需要的最小权限,避免为MySQL账号授予alter,grant权限 (2).删除匿名账号 匿名账号容易带来安全隐患,建议删除,执行如下SQL语句即可删除权限表中所有的匿名账号: mysqldelete from mysql.user where u
       怎样消除MySQL账号的安全隐患:

  (1).给MySQL账号赋予其所需要的最小权限,避免为MySQL账号授予alter,grant权限
 
  (2).删除匿名账号
  匿名账号容易带来安全隐患,建议删除,执行如下SQL语句即可删除权限表中所有的匿名账号:
  mysql>delete from mysql.user where user='';
  mysql>delete from mysql.db where user='';
  mysql>delete from mysql.tables_priv where user='';
  mysql>delete from mysql.columns_priv where user='';
  mysql>delete from mysql.procs_priv where user='';
 
  (3).删除登录主机可以是任意主机的MySQL账号
  登录主机为"%"或者空字符串的MySQL账户,容易带来安全隐患,建议删除,执行如下SQL语句即可删除权限表中登录主机为"%"或空字符串的MySQL账户。
  mysql>delete from mysql.user where host='%' or host='';
  mysql>delete from mysql.db where host='%' or host='';
  mysql>delete from mysql.tables_priv where host='%' or host='';
  mysql>delete from mysql.columns_priv where host='%' or host='';
  mysql>delete from mysql.procs_priv where host='%' or host='';
 
  (4).修改root账号的密码
  root账号拥有MySQL服务实例最高的权限,数据库超级管理员root账号有必要定制修改root账号的密码,执行如下SQL来修改:
  mysql>set password for root@'localhost'=password('newroot');
  mysql>set password for root@'127.0.0.1'=password('newroot');
 
  (5).修改root账号的账号名
  安装MySQL时,MySQL将自动创建数据库超级管理员root账户,且该账户拥有对数据库的最高权限,数据库超级管理员有必要对自己重命名,执行如下SQL来修改:
  mysql>rename user root@'localhost' to newroot@'localhost';
  mysql>rename user root@'127.0.0.1' to newroot@'127.0.0.1';
 
  (6).修改MySQL服务的端口号
  默认情况下,MySQL使用3306端口号为MySQL客户端提供MySQL服务,将端口号修改为其它端口号,可以避免非法用户远程连接MySQL服务器,Linux系统可以通过
  修改my.cnf配置文件[mysqld]选项组"port=3306"的参数值来完成
 
  (7).禁止远程连接
  向my.cnf或my.ini(windows平台)配置文件[mysqld]选项组添加参数信息"bind_address=127.0.0.1",告诉MySQL服务器只能监听来自"127.0.0.1"或者"localhost"本地主机的连接请求,禁止远程连接。
 
  (8).为远程连接的数据库用户提供安全的账号名、密码和连接主机。
 
  (9).禁止MySQL读取MySQL客户机本地文件
  使用"load data local infile"命令可以将MySQL客户机的本地文件导入MySQL数据库表中,如果非法用户
  通过该命令将非法信息导入到MySQL系统的数据库权限表中,后果不堪设想。数据库可以在my.cnf或my.ini
  配置文件[mysqld]选项组中添加"local_infile=0"参数信息来禁止MySQL读取MySQL客户机本地文件。
 
  (10).除非必要,避免为MySQL账户授予file权限,防止数据库用户在MySQL服务器上创建file
       说明:如果某个MySQL账号需要执行"select..into..outfile"命令完成数据库的备份工作,那么该账户需要授予file权限
 
  MySQL安全管理的其他注意事项:
  (1).当删除对象时,MySQL不会去清理那些旧权限,这些旧权限会一直留在那里。如果未来的某个时候又以同样的名字创建了该对象,那么这些权限依旧有效。
  (2).避免使用insert,update,delete等更新语句直接操作权限表
  (3).由于MySQL没有提供用户组或角色这样的功能,命名MySQL账户名时,可以在账户名中添加后缀或者前缀(例如复制账号添加"_replication"后缀),使用这种方法可以通过通配符批量修改用户权限,模拟实现用户组或角色功能。
  (4).由于MySQL服务实例的"管理"权限,例如shutdown,process,show databases,super,create user,create tablespace等权限,功能太强大,建议将拥有这些权限的MySQL账号限制在一台单独的主机上使用.

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读