• 十四、MySql的用户管理


    一、用户管理

    如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。
    在这里插入图片描述

    二、用户

    (一)用户信息

    MySQL中的用户,都存储在系统数据库mysql的user表中。

    mysql> use mysql;
    Database changed
    mysql> select host,user,authentication_string from user;
    
    • 1
    • 2
    • 3

    请添加图片描述
    字段解释:

    • host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
    • user: 用户名
    • authentication_string: 用户密码通过password函数加密后的
    • *_priv: 用户拥有的权限

    (二)创建用户

    1.语法:

    create user '用户名'@'登陆主机/ip' identified by '密码';
    
    • 1

    2.案例:

    mysql> create user 'whb'@'localhost' identified by '12345678';
    
    • 1
    Query OK, 0 rows affected (0.06 sec)
    mysql> select user,host,authentication_string from user;
    +---------------+-----------+-------------------------------------------+
    | user           | host      | authentication_string                    |
    +---------------+-----------+-------------------------------------------+
    | root           | %         | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75|
    | mysql.session  | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mysql.sys      | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mt 			 | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1| --新增用户
    +---------------+-----------+-------------------------------------------+
    4 rows in set (0.00 sec)
    -- 此时便可以使用新账号新密码进行登陆啦
    --备注:可能实际在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会爆出
    如下报错:
    -- ERROR 1819 (HY000): Your password does not satisfy the current policy
    requirements
    -- 解决方案:https://blog.csdn.net/zhanaolu4821/article/details/93622812
    --查看密码设置相关要求:SHOW VARIABLES LIKE 'validate_password%';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    (三) 删除用户

    1.语法:

    drop user '用户名'@'主机名'
    
    • 1

    2.示例:

    mysql> select user,host,authentication_string from user;
    mysql> select user,host,authentication_string from user;
    +---------------+-----------+-------------------------------------------+
    | user           | host      | authentication_string                    |
    +---------------+-----------+-------------------------------------------+
    | root           | %         | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75|
    | mysql.session  | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mysql.sys      | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mt 			 | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1| --新增用户
    +---------------+-----------+-------------------------------------------+
    4 rows in set (0.00 sec)
    mysql> drop user whb; --尝试删除
    ERROR 1396 (HY000): Operation DROP USER failed for 'mt'@'%' -- <= 直接给个用户名,
    不能删除,它默认是%,表示所有地方可以登陆的用户
    mysql> drop user 'mt'@'localhost'; --删除用户
    Query OK, 0 rows affected (0.00 sec)
    +---------------+-----------+-------------------------------------------+
    | user           | host      | authentication_string                    |
    +---------------+-----------+-------------------------------------------+
    | root           | %         | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75|
    | mysql.session  | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mysql.sys      | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mt 			 | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1| --新增用户
    +---------------+-----------+-------------------------------------------+
    4 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    (四)修改用户密码

    1.语法:

    • 自己改自己密码
    set password=password('新的密码');
    
    • 1
    • root用户修改指定用户的密码
    set password for '用户名'@'主机名'=password('新的密码')
    • 1
    mysql> select host,user, authentication_string from user;
    
    • 1
    +---------------+-----------+-------------------------------------------+
    | user           | host      | authentication_string                    |
    +---------------+-----------+-------------------------------------------+
    | root           | %         | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75|
    | mysql.session  | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mysql.sys      | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mt 			 | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1| --新增用户
    +---------------+-----------+-------------------------------------------+
    4 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    mysql> set password for 'mt'@'localhost'=password('87654321');
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    • 1
    • 2
    mysql> select host,user, authentication_string from user;`+---------------+-----------+-------------------------------------------+
    | user           | host      | authentication_string                    |
    +---------------+-----------+-------------------------------------------+
    | root           | %         | *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75|
    | mysql.session  | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mysql.sys      | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE|
    | mt 			 | localhost | *5D24C4D94238E65A6407DFAB95AA4EA97CA2B199| --新增用户
    +---------------+-----------+-------------------------------------------+
    4 rows in set (0.00 sec)`
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    三、数据库的权限

    MySQL数据库提供的权限列表:
    在这里插入图片描述

    (一)给用户授权

    刚创建的用户没有任何权限。需要给用户授权。

    1.语法

    grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
    
    • 1

    2.说明

    • 权限列表,多个权限用逗号分开
    grant select on ...
    grant select, delete, create on ....
    grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
    
    • 1
    • 2
    • 3
    • . : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
    • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
    • identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

    3.案例:

    --使用root账号
    --终端A
    mysql> show databases;
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    --给用户whb赋予test数据库下所有文件的select权限
    mysql> grant select on test.* to 'whb'@'localhost';
    Query OK, 0 rows affected (0.01 sec)
    
    • 1
    • 2
    • 3
    --使用whb账号
    --终端B
    
    • 1
    • 2

    (二) 回收权限

    1.语法:

    revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置'
    • 1

    2.示例:

    -- 回收mt对test数据库的所有权限
    --root身份,终端A
    mysql> revoke all on test.* from 'mt'@'localhost';
    Query OK, 0 rows affected (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    mysql全文索引
    AD9371 官方例程HDL详解之JESD204B TX侧时钟生成 (二)
    [杂谈]-快速了解直接内存访问 (DMA)
    这次把怎么做好一个PPT讲清-画图篇
    centos7.6安装 guacamole-server.1.4.0踩坑记录
    JS删除对象的某个属性
    Java复习-25-单例设计模式
    微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
    深度学习 RNN循环神经网络原理与Pytorch正余弦值预测
    window10安装elasticSearch、kibana、ik分词器
  • 原文地址:https://blog.csdn.net/weixin_54447296/article/details/133146837