zoukankan      html  css  js  c++  java
  • MySQL多表&事务04DCL3

    1、SQL分类

        1. DDL:操作数据库和表

      2. DML:增删改表中数据

      3. DQL:查询表中数据

      4. DCL:管理用户,授权

    2、DBA:数据库管理员,专门管理公司的数据库。

      去了公司,dba会给员工创建一个新的用户,并且对用户进行一些权限的授予,我可以使用自己的用户登录数据库来访问数据库。所有的开发人员访问同一个数据库但是使用自己的账号。不可能使用root用户,因为root用户权限太高了,操作太危险。

    3、DCL:管理用户,授权

       1. 管理用户

        a. 添加用户:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

          示例1:CREATE USER 'zhangsan'@'localhost' IDENTIFIED BY '123'; -- 查询结果如下:   

             

          示例2:CREATE USER 'lisi'@'%' IDENTIFIED BY '123'; -- 查询结果如下:

           

          cmd终端登录:

          >mysql -uzhangsan -p123

          >mysql -ulisi -p123                -----------由此可见,%也是可以在当前主机登录的

        b. 删除用户:DROP USER '用户名'@'主机名';

          示例1:DROP USER 'zhangsan'@'localhost';

          示例2:DROP USER 'lisi'@'%';

        c. 修改用户密码:

          i. UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';

            UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER = 'lisi';

          ii. SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');

            SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');

          注意:mysql中忘记了root用户的密码?

            1. cmd--> net stop mysql 停止mysql服务

             * 需要以管理员身份运行该cmd,否则报系统错误。

                

             2. 使用无验证方式启动mysql服务:mysqld --skip-grant-tables,执行后第二行光标一直在闪烁

             3. 打开新的cmd窗口,直接输入mysql命令,敲回车就能连接数据库成功

             4. 新窗口执行use mysql;

             5. 新窗口执行修改密码命令update user set password = password('新密码') where user = 'root';

             6. 关闭两个cmd终端窗口

             7. 菜单栏右键打开任务管理器,手动结束mysqld.exe 的进程

             8. 以管理员身份运行cmd终端,启动mysql服务:net start mysql

             9. 使用新密码登录:mysql -uroot -proot

        d. 查询用户:

          -- 1. 切换到mysql数据库

            USE mysql;
          -- 2. 查询user表
            SELECT * FROM USER; -- Host=localhost表示root用户可以在当前主机上登录;通配符 % 表示可以在任意主机使用用户登录数据库,表示远程访问。

            

       2. 权限管理

        a. 查询权限:

         语法:SHOW GRANTS FOR '用户名'@'主机名';

         示例1:SHOW GRANTS FOR 'lisi'@'%';

          

           usage表示只有登录权限,use db3;执行就会报没访问权限

         示例2:SHOW GRANTS FOR 'root'@'%'; 

          

           root用户有所有权限。

        b. 授予权限:

          语法:grant 权限列表 on 数据库.表名 to '用户名'@'主机名';

          示例1:GRANT SELECT ON db3.account TO 'lisi'@'%';

            给lisi赋予查询权限后,通过show tables只能看到db3中的account表,其他表看不到,且只有account表的查询权限。

          示例2:GRANT SELECT,DELETE,UPDATE ON db3.account TO 'lisi'@'%';

          示例3:给zhangsan用户授予所有权限,在任意数据库任意表上 GRANT ALL ON *.* TO 'zhangsan'@'localhost';

        c. 撤销权限:

          语法:REVOKE 权限列表 ON 数据库.数据表 FROM '用户名'@'主机名';

           示例1:REVOKE UPDATE ON db3.account FROM 'lisi'@'%';

           示例2:REVOKE ALL ON *.* FROM 'lisi'@'%';

  • 相关阅读:
    素因子分解
    【转载】一张表看懂LTE和5G NR的区别
    看国家宝藏,顺便学习一下国密算法
    LTE-Advanced(4G)主要技术学习:CA、CoMp、HetNet
    未来移动通信的需求与挑战
    傅里叶级数
    正余弦函数的复指数表示
    网络基础——相关面试考点
    操作系统——相关面试考点
    小米2015笔试编程题
  • 原文地址:https://www.cnblogs.com/ajing2018/p/15706620.html
Copyright © 2011-2022 走看看