mysql用户创建以及权限分配

笔者历任公司当中 不乏会遇见一些小公司在针对数据库权限问题方面做得不够到位 , 过度信任员工 , 
当然了这里也不是说员工必然就是坏人 , 不怕一万 , 就怕万一  , 
如果在数据库权限问题方面做得不够到位 , 可能会出现意想不到的严重后果 , 所以笔者这边还是想重申一下 , 数据库权限问题 , 
在整个开发过程当中还是相当重要的

首先我们需要知道mysql的系统权限是如何运作的

一、MySQL权限系统通过两个阶段进行认证:

  (A) 对用户进行身份认证,IP地址和用户名联合,

  (B) 对合法用户赋予相应权限,权限表在数据库启动的时候载入内存中。

二、在权限的存取过程中,会用到”mysql“数据库中的user、host和db这3个权限表。两阶段验证过程

  (A) user表中 host、user和password判断是否可连接。

  (B) 权限表顺序 user->db->tables_priv->columns_priv。

  user表中的每个权限都代表了对所有数据库都有的权限,db表中的每个权限都代表了对特定数据库才有的权限。

三、账号管理

  创建账号的两种方式:使用GRANT语法创建或直接操作授权表,推荐第一种。

  修改权限可以使用 GRANT和REVOKE命令。

四、安全问题

  (A) 严格控制操作系统帐号和权限

  (B) 尽量避免以root权限运行MySQL

  (C) 防止DNS欺骗

  (D) 删除匿名账户

  (E) 给root账号设置口令

  (F) 设置安全密码

  (G) 只授予账号必须的权限

  (H) 只让root拥有mysql库user表的存取权限

  (I) 只让 管理员拥有 FILE、PROCESS和SUPER权限

  (J) DROP TABLE 并不会回收以前的相关访问授权

  (K) 使用SSL

  (L) 给所有用户加IP限制

  (M) 注意REVOKE命令的漏洞

首先笔者认为应该排在首位的就是创建一个账号权限等同于 root 的账户 或者仅次于root 的账户一用来做为日常管理 

, 因为root 用户代表着能操作数据库权限等级的最高权限 , 需尽量避免直接登录root  

创建用户 命令 , 并赋予权限  , 添加 , 修改 , 查询 , 请注意在以下三个字符"Y" 中并未赋予该locahost 用户删除权限 

INSERT INTO user 
          (host, user, password, 
           select_priv, insert_priv, update_priv) 
           VALUES ('localhost', '123456', 
           PASSWORD('123456'), 'Y', 'Y', 'Y');

-- 查看用户权限

show grants for 'localhost'@'%';

-- 允许远程登录

GRANT ALL PRIVILEGES ON *.* TO 'localhost'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

-- 用户创建完成之后 , 并非不可修改  , mysql 还向用户提供两个 grant 命令 用于修改用户权限 

     --  直接授权

        GRANT select ON nbiot.meiqi4 TO 'localhost'@'%';

     -- 具体授权至database

        grant select,insert,update,delete,create on 数据库名称.* to 用户名称;

    --刷新生效
       flush privileges ;

 

    

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值