• MySQL安全机制 DDL DCL


    一、MySQL用户管理

    1. 修改用户密码

    ===root修改自己密码===

    方法一:
    # mysqladmin -uroot -p'123' password 'new_password' //123为旧密码

      方法二:
    mysql > UPDATE mysql.user SET authentication_string=password(‘new_password’)
    WHERE user=’root’ AND host=’localhost’;
    mysql > FLUSH PRIVILEGES;

    方法三:
    mysql > SET PASSWORD=password(‘new_password’);

    ===root修改其他用户密码===

    方法一:
    mysql > SET PASSWORD FOR user3@’localhost’=password(‘new_password’);

      方法二:
    mysql > UPDATE mysql.user SET authentication_string=password(‘new_password’)
    WHERE user=’user3’ AND host=’localhost’;
    mysql > FLUSH PRIVILEGES;

    ===普通用户修改自己密码===
    mysql > SET password=password(‘new_password’);

    ===丢失root用户密码===

    进入mysql的配置文件,在[mysqld]字段中添加skip-grant-tables,及取消mysql的root密码,保存并退出,重启mysql生效。

    # vim /etc/my.cnf
      [mysqld]
      skip-grant-tables
    # service mysqld restart
    # mysql -uroot
    mysql> UPDATE mysql.user SET authentication_string=password(‘new_password’)
    WHERE user=’root’ AND host=’localhost’;
    mysql> FLUSH PRIVILEGES;

    2. 登录和退出MySQL

          示例:

    mysql -h192.168.5.240 -P 3306 -u root -p123 mysql -e ‘select user,host from user’

    -h 指定主机名 【默认为localhost】
    -P MySQL服务器端口 【默认3306】
    -u 指定用户名 【默认root】
    -p 指定登录密码 【默认为空密码】
    此处mysql为指定登录的数据库
    -e 接SQL语句

    3. 创建用户

    方法一:CREATE USER语句创建

    CREATE USER user1@’localhost’ IDENTIFIED BY ‘123456’;

    方法二: GRANT语句创建

    GRANT ALL ON *.* TO 'user3'@’localhost’ IDENTIFIED BY ‘123456’;
    FLUSH PRIVILEGES;
    

    4. 删除用户
    方法一:DROP USER语句删除

    DROP USER 'user1'@’localhost’;

    方法二:DELETE语句删除

    DELETE FROM mysql.user WHERE user=’user2’ AND host=’localhost’;
    FLUSH PRIVILEGES;
    

    二、MySQL权限管理 

    1、权限应用的顺序:
    user (Y|N) ==> db ==> tables_priv ==> columns_priv 

    2、语法格式:
    grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' [identified by '密码' with option参数];
    ==权限列表      all 所有权限          (不包括授权权限)
               select,update

    ==数据库.表名        *.*               所有库下的所有表        Global level
                web.* web          库下的所有表           Database level
                web.stu_info web       库下的stu_info表         Table level
                SELECT (col1), INSERT (col1,col2) ON mydb.mytbl        Column level

    ==客户端主机         %              所有主机
              192.168.2.%             192.168.2.0网段的所有主机
              192.168.2.168           指定主机
                localhost            指定主机

    3、with_option参数
    GRANT OPTION:                      授权选项
    MAX_QUERIES_PER_HOUR:    定义每小时允许执行的查询数
    MAX_UPDATES_PER_HOUR:    定义每小时允许执行的更新数
    MAX_CONNECTIONS_PER_HOUR: 定义每小时可以建立的连接数
    MAX_USER_CONNECTIONS:    定义单个用户同时可以建立的连接数

    4、Grant示例:

    GRANT ALL ON *.* TO admin1@'%' IDENTIFIED BY '(dulingyu)';
    GRANT ALL ON *.* TO admin2@'%' IDENTIFIED BY '(dulingyu)' WITH GRANT OPTION;
    GRANT ALL ON bbs.
    * TO admin3@'%' IDENTIFIED BY '(dulingyu)';
    GRANT ALL ON bbs.
    * TO admin3@'192.168.122.220' IDENTIFIED BY '(dulingyu)';
    GRANT ALL ON bbs.user TO admin4@
    '%' IDENTIFIED BY '(dulingyu)';
    GRANT SELECT(col1),INSERT(col2,col3) ON bbs.user TO admin5@
    '%' IDENTIFIED BY '(dulingyu)';

    5、回收权限REVOKE
    查看权限
    SHOW GRANTSG;
    SHOW GRANTS FOR admin1@'%'G;

    回收权限REVOKE
    语法:
    REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
    示例:
    REVOKE DELETE ON *.* FROM admin1@’%’; //回收部分权限
    REVOKE ALL PRIVILEGES ON *.* FROM admin2@’%’; //回收所有权限
    REVOKE ALL PRIVILEGES,GRANT OPTION ON *.* FROM 'admin2'@'%';
    删除用户:
    5.6          revoke all privilege              drop user
    5.7                              drop user

     

  • 相关阅读:
    认识 liunx 文件属性
    laravel 配置mongodb 出现 Database [text] not configured 问题【已解决】
    php 判断字符串的长度的两种方法
    php 循环里面套sql怎么解决
    php 给入门新手们填的第一个坑
    Vue 调用其他Vue或自己Vue中的方法时,this指向不生效
    绑定点击事件触发多次
    computed 计算属性的获取和设置
    el-Cascader 最后一项删不掉
    前端 --- 格式化的配置
  • 原文地址:https://www.cnblogs.com/ling-yu-amen/p/10536583.html
Copyright © 2020-2023  润新知