• MYSQL权限管理


    我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。
    个人博客:传送阵
    笔者微信:zhanghe15069028807

    MYSQL运行时,应该遵循以下准则:

    • 不要给开发配置超级用户权限
    • 不要在数据库当中存储明文密码
    • 不要用不满足复杂性要求的密码
    • 不允许非信任主机的扫描(需安全设备配合)

    1、用户账户管理

    1.登录和退出 MySQL , 使⽤ mysql -u root -p 可以连接数据库, 但这只是本地连接数据库的⽅式,
    在⽣产很多情况下都是连接⽹络中某⼀个主机上的数据库

    -P //指定连接远程数据库端⼝[默认3306]
    -h //指定连接远程数据库地址[默认localhost]
    -u //指定连接远程数据库账户[默认root]
    -p //指定连接远程数据库密码[默认密码为空]
    -e //执⾏mysql数据库sql指令,非交互操作

    上面几个选项最后一个-e我们会经常在脚本里面使用,举个例子:

    mysql -u root -p'abc-123' -e "show databases;" | sed 1d | egrep -v 'information_schema|mysql|test|performance_schema'
    bgx
    bgx_edu
    

    2、创建用户

    //先用create创建用户,然后再用grant进行授权
     create user zhanghe@'localhost' identified by 'cba-123';
    grant all on *.* to zhanghe@'localhost';
    
    //创建用户和授权可以放到一起
     grant all on *.* to zhangjia@'localhost' identified by 'cba-123';
    

    3、删除用户

    //用`drop user`删除
    drop user zhanghe@'localhost';
    
    //delete语句删除
    delete from mysql.user where user='zhangjia';
    

    4、修改root用户密码

    //用shell方式修改
    mysqladmin -uroot -p'abc-123' password 'cba-123';
    
    //用updata直接修改数据表,别忘记刷新
    update mysql.user set password=password("cba-123") where user='root' and host='localhost';
    
    //在当前用户下直接修改密码
    set password=password("cba-123");
    

    5、修改其它用户密码

    //用`set password`指令修改
    create user zhangsan@'localhost' identified by 'cba-123';
    set password for zhangsan@'localhost'=password('NEW-passwd');
    
    //用`updata`直接修改`mysql.user`表,别忘记刷新
    update mysql.user set password=password("cba-123") where user='zhangsan' and host='localhost';
    

    2、访问权限管理

    1、权限表

    mysql.user全局授权
    mysql.db数据库级
    mysql.tables_priv表级别
    mysql.columns_priv列级
    权限应用顺序:user>db>tables>columns

    3、例子

    //例一、下面这个是全局级别的授权
    grant ALL ON *.* to zhanghe@'%' identified by 'cba-123';
    select * from mysql.userG  #通过此条命令可以看到权限
    
    //例二、全局级别,只不过比例一多一个`GRANT`权限而已。
    grant ALL ON *.* to zhanghe@'%' identified by 'cba-123' with grant option;
    
    //例三:库级别
    rant ALL on bgx.* to admin02@'%' identified by 'cba-123';
    select * from mysql.userG  #通过这个表发现admin02没有任何权限,因为根本没有存放在此
    select * from mysql.db;     #在这
    
    //例四:表级别
    grant ALL on bgx.t5 to admin01@'%' identified by 'cba-123';
    select * from mysql.tables_privG
    
    //例五,列级别
    grant select(id),insert(name) on bgx.t5 to lisi@'%' identified by 'cba-123';
    select * from columns_privG
    

    3、访问权限回收

    1、查看用户的权限

    //查看root用户的权限
    MariaDB [mysql]> show grants;
    +----------------------------------------------------------------------------------------------------------------------------------------+
    | Grants for root@localhost                                                                                                              |
    +----------------------------------------------------------------------------------------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*D1BE934B99C7CFFE2843BDE71DB34BBB0894B2DD' WITH GRANT OPTION |
    | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION                                                                           |
    +----------------------------------------------------------------------------------------------------------------------------------------+
    
    //查看其它用户的权限
    MariaDB [mysql]> show grants for lisi@'%';
    +-----------------------------------------------------------------------------------------------------+
    | Grants for lisi@%                                                                                   |
    +-----------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'lisi'@'%' IDENTIFIED BY PASSWORD '*D1BE934B99C7CFFE2843BDE71DB34BBB0894B2DD' |
    | GRANT SELECT (id), INSERT (name) ON `bgx`.`t5` TO 'lisi'@'%'                                        |
    +-----------------------------------------------------------------------------------------------------+
    

    2、权限回收

    //回收用户的DELETE权限
    revoke DELETE on *.* from zhanghe@'%';
    
    //回收用户所有的权限
    revoke ALL on *.* from zhanghe@'%';
    
    //回收grant权限
    revoke GRANT OPTION on *.* from zhanghe@'%';
    
  • 相关阅读:
    js用currentStyle和getComputedStyle获取css样式(非行间)
    XMLHttpRequest Level 2 使用指南
    image-set实现Retina屏幕下图片显示[转载]
    Png的秘密
    css清除&闭合浮动
    2016学习计划
    提高性能及操作硬件的能力
    新兵易学,老兵易用----C++(C++11的学习整理---如何减少代码量,加强代码的可读性)
    CV限制符--C++
    能ping通网络,也正常连接,就是打不开网页,无法访问网络
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/11906788.html
Copyright © 2020-2023  润新知