zoukankan      html  css  js  c++  java
  • 0428-mysql(事务、权限)

    1.事务

    “事务”是一种可以保证“多条语句一次性执行完成”或“一条都不执行”的机制。

    两种开始事务的方法:

      1.set  autocommit = 0; //false,此时不再是一条语句一个事务了,必须使用commit语句才能够生效。默认=1(true)

      2.start transaction  //声明事务开始。

    事务的基本实现流程:

    1.声明事务开始:start transaction;

    2.设定多条要执行的具体语句,比如:insertupdatedelete, select...其实就是执行,只是这些执行的语句,并不“生效”——其只是内存状态下的执行,而不是物理状态的执行。

    3.判断是否需要执行该些语句:

      if( 判断是否有错误){

        //执行——才针对执行了物理性改变——即生效。

        commit;

      }

      else{

        //回滚——不执行任何语句。

        rollback;

      }

    判断是否有错误通常分这两种环境:

    1.如果是cmd中,直接观察是否出错。

    2.如果是php程序中,那就需要使用 mysql_error()函数来判断是否有错。

    2.权限

    MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用。如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接。

    在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户:

    1
    CREATE USER username IDENTIFIED BY 'password';

    新用户创建完成,但是此刻如果以此用户登陆的话,会报错,因为我们还没有为这个用户分配相应权限,分配权限的命令如下:

    1
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

    授予username用户在所有数据库上的所有权限。

    如果此时发现刚刚给的权限太大了,如果我们只是想授予它在某个数据库上的权限,那么需要切换到root 用户撤销刚才的权限,重新授权:

    1
    2
    EVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';
    GRANT ALL PRIVILEGES ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';

    甚至还可以指定该用户只能执行 select 和 update 命令:

    1
    GRANT SELECT, UPDATE ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';

    这样一来,再次以username登陆 MySQL,只有wordpress数据库是对其可见的,并且如果你只授权它select权限,那么它就不能执行delete 语句。

    另外每当调整权限后,通常需要执行以下语句刷新权限:

    1
    FLUSH PRIVILEGES;

    删除刚才创建的用户:

    1
    DROP USER username@localhost;

    仔细上面几个命令,可以发现不管是授权,还是撤销授权,都要指定响应的host(即 @ 符号后面的内容),因为以上及格命令实际上都是在操作mysql 数据库中的user表,可以用如下命令查看相应用户及对应的host

    1 SELECT User, Host FROM user;

      

  • 相关阅读:
    Android应用Activity、Dialog、PopWindow、Toast窗口添加机制及源码分析
    Android应用setContentView与LayoutInflater加载解析机制源码分析
    Android图片加载框架Fresco,Glide,Picasso对比分析
    Android加载外部APK资源
    https 真的安全吗,可以抓包吗,如何防止抓包吗
    Android常见的几种内存泄漏
    Android应用结构之LiveData
    Android Jetpack LiveData解析
    android使用socket实现简单的点对点通信
    如何分析解决Android ANR
  • 原文地址:https://www.cnblogs.com/flypea93/p/8966694.html
Copyright © 2011-2022 走看看