首页 > 代码库 > mysql由浅入深探究(二)----mysql用户操作

mysql由浅入深探究(二)----mysql用户操作

  上一节我们完成了mysql的安装,现在我们将开启实战模式,完成一些基本的mysql操作。这节我们分为一些几个内容:

      • mysql中用户新建
      • mysql中用户删除
      • mysql中用户修改
      • mysql中用户查看

  接下来的几章的内容分布都是按照这个模式进行的----增删改查,这也是数据库的本质。

  1. mysql中用户的新建:我们不是创建了root用户了吗?为什么还需要创建用户,原因很简单,就像linux一样,有了root,但是还是需要创建其他用户,因为root的权限太高,很多操作我们并不希望所有的用户都有权限执行。其实就是起到一个权限控制的作用。

     我们先查看一下mysq.user的表结构(由于属性太多,采用命令select * from mysql.user\G来输出)

           技术分享

   可以看到其中有很多参数,select_privilege表达的是查询的权限。

   新增加一个用户: insert into mysql.user(Host,User,Password) values("localhost","libo",password("***"));

   同样的方式,我们通过命令查看,可以发现新建的用户我们没有任何权限,所有权限属性都是N, 那是不是现在我们没有对数据库操作的任何权限呢?

      但是如果我们此时直接使用用新建的用户登陆mysql的话会提示错误:ERROR 1045 (28000): Access denied for user ‘libo‘@‘localhost‘ (using password: YES),这是为什么?因为mysql不支持热启动,我们在新建用户的或者是进行用户权限的操作时,其实mysql并没有察觉到这个变化,所以我们使用flush privileges加载这个权限更改。

    但是登陆之后可以发现,我们并没有权限来操作数据库,新建也不行。技术分享

    localhost权限问题: 如果我们在创建用户时,我们制定的第一个参数是localhost,那么我们就只能在本地进行登陆,远程无法使用该用户进行登陆,如果想要远程登陆,那么我们可以把这个参数改为%。

    用户权限问题:  如何给新建的用户授予权限?语法如下:

            grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";

            实验一下,我们刚才新建的用户libo并没有赋予任何权限,现在我们想要提供一些基本的新增的权限,那么我们可以这样写:

            grant create on test.* to libo@localhost identified by "***";

            下面我们再测试一下现在能不能新建表了。技术分享

            现在发现我们具有了新增的权限,但是我们并没有删除的权限。

  2. 用户删除操作:

      语法:(其实和普通table同样的语法结构)delete fromt mysq.user where User="libo";

  3. 用户修改操作: 

         语法:  update mysq.user set Host="%" where User="***";

  4. 用户查看操作: 

       语法:  select * from mysql.user where user="***"; 

mysql由浅入深探究(二)----mysql用户操作