• mysql 用户权限管理


    MySQL用户权限管理

    1.linux用户和mysql用户对比

    linux系统 mysql数据库
    用户的作用 1.登录系统 2.管理系统文件、服务 1.登录数据库 2.管理数据库数据
    创建用户 1.useradd 2.adduser 1.create user root@'localhost'; 2.grant ...
    用户密码 1.password lhd 2.useradd lhd -p 12345678 1.create user 2.grant 3.mysqladmin
    删除用户 1.userdel -r 1.drop user root@'localhost'; 2.delete
    修改用户 1.usermod 1.update 2.grant

    2.在mysql中,用户是怎么定义的?

    #在MySQL中,一个完整的用户是:  '用户'@'主机域'
    #创建一个用户后一定要刷新授权表才生效!!!
    
    1.用户名定义方法:
    	1)如果是数字为用户名,需要加引号
    		mysql> create user '123'@'locahost';
                    mysql>  flush privileges;
    	2)如果是字符为用户名,不需要加引号
    		mysql> create user lhd@'locahost';
                    mysql>  flush privileges;
    		
    2.主机域的定义方式:
    	1)localhost
    	2)127.0.0.1
    	3)db01
    	4)::1
    	5)%
    	6)10.0.0.%  (10.0.0.1-255)
    	7)10.0.%.%
    	8)10.%.%.%
    	9)10.0.0.5%  (10.0.0.50-59)
    	10)10.0.0.0/255.255.255.0
    	#可以设置,但是不能使用该用户连接
    	11)10.0.0.0/24
    

    3.用户管理

    1)创建用户并设置密码

    mysql> create user lhd@'172.16.1.%' identified by '123';
    Query OK, 0 rows affected (0.02 sec)
    mysql>  flush privileges;
    

    2)查看用户

    mysql> select user,host from mysql.user;
    +--------+------------------------+
    | user   | host                   |
    +--------+------------------------+
    | qiudao | 10.0.0.0/24            |
    | lhd    | 10.0.0.0/255.255.255.0 |
    | lhd    | 172.16.1.%             |
    | root   | localhost              |
    +--------+------------------------+
    4 rows in set (0.00 sec)
    

    3)删除用户

    mysql> drop user qiudao@'10.0.0.0/24';
    Query OK, 0 rows affected (0.00 sec)
    

    4)修改用户密码

    #1.方式一:命令行修改密码
    [root@db02 /service]# mysqladmin -uroot -p password
    Enter password: 123456
    New password: 123
    Confirm new password: 123
    
    #2.方式二:授权的方式修改密码
    mysql> grant all on *.* to lhd@'10.0.0.0/255.255.255.0' identified by '123456';
    Query OK, 0 rows affected (0.00 sec)
    mysql>  flush privileges;
    
    #3.方式三:更新数据库密码
    mysql> update mysql.user set password=PASSWORD('123456') where user='lhd' and host='172.16.1.%';
    Query OK, 1 row affected (0.01 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    mysql>  flush privileges;
    #4.方式四:直接设置密码
    mysql> set password=PASSWORD('123456');
    Query OK, 0 rows affected (0.00 sec)
    

    5)忘记root密码怎么办

    #1.停止数据库
    #2.跳过授权表和网络启动
    #3.连接数据库
    #4.刷新授权表
    #5.修改密码
    #6.正常启动数据库
    

    4.权限管理

    1)权限管理的命令

    mysql> grant all on *.* to root@'172.16.1.51' identified by '123';
    mysql>  flush privileges;
    grant all on *.* to root@'172.16.1.51' identified by '123';
    grant 				# 授权命令
    all 				# 所有权限
    on 				# 在。。。上
    *.* 				# 所有库.(包含)所有表
    to 				# 给。。
    root@'172.16.1.51' 	        # 定义的用户  '用户名'@'主机域'
    identified 			# 设置密码
    by 				# 是
    '123';
    

    2)查看所有权限

    #1.回收权限
    mysql> revoke select on *.* from root@'172.16.1.51';
    Query OK, 0 rows affected (0.00 sec)
    mysql>  flush privileges;
    
    #2.查看用户的权限
    mysql> show grants for root@'172.16.1.51';
    
    #3.所有权限包括:
    SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, GRANT
    

    5.授权的对象

    grant all on *.* to root@'172.16.1.%' identified by '123';          # 所有库下的所有表
    grant all on mysql.* to root@'172.16.1.%' identified by '123';	    # mysql库下的所有表,单库授权
    grant all on mysql.user to root@'172.16.1.%' identified by '123';   # 单表授权
    
    #单列授权,企业称之为脱敏,脱敏:脱离敏感信息
    1.普通用户只能查看用户名字
    	mysql> grant select(user) on mysql.user to diaosi@'172.16.1.%' identified by '123';
            mysql>  flush privileges;
    2.VIP用户可以查看用户用户较多的信息
    	mysql> grant select(user,host) on mysql.user to diaosi@'172.16.1.%' identified by '123';
            mysql>  flush privileges;
    3.超级VIP可以查看用户所有的信息
    	mysql> grant select on mysql.user to diaosi@'172.16.1.%' identified by '123';
            mysql>  flush privileges;
    
    # 单列授权,企业中叫做脱敏,脱敏:脱离敏感信息
    

    6.在企业里一般我们怎么给权限

    #开发要一个用户登录数据库
    1.跟开发沟通:
    	1)你要操作的是哪个库哪个表
    	2)你要对这个表进行哪些操作
    	3)你从哪个IP连过来
    	4)你对用户名的要求
    	5)你对密码有什么要求
    	6)你的用户要用多久
    	7)发邮件
    2.一般怎么授权
    	grant select,insert,update on mysql.* to dev@'172.16.1.51' identified by 'Dev@123456';
            flush privileges;
    3.开发要root用户怎么办?
    

    7.授权总结

    1.不同级别授权,权限是相加关系
    2.不推荐在多级别定义重复的权限
    3.常见的授权方式是单库授权
    	grant select,insert,update on mysql.* to dev@'172.16.1.51' identified by 'Dev@123456';
            mysql>  flush privileges;
    4.如果涉及到用户的敏感信息,可以使用脱敏,单列授权
    5.查看用户的权限
    	mysql> show grants for root@'172.16.1.%';
    
  • 相关阅读:
    在Livemedia的基础上开发自己的流媒体客户端
    开源流媒体处理库live555服务器端、客户端源代码分析总结
    海康、大华IpCamera RTSP地址和格式
    专题:Windows编译x264、SDL、faac、ffmpeg过程
    linux下c/c++ IDE开发工具介绍
    socket选项自带的TCP异常断开检测
    logstash-input-jdbc实现mysql 与elasticsearch实时同步(ES与关系型数据库同步)
    哈希存储、哈希表原理
    APM系列-国外新兴厂商New Relic vs. AppDynamics
    SkyWalking 分布式追踪系统
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/13858326.html
Copyright © 2020-2023  润新知