【MySQL】用户管理&权限控制

前言

MySQL的数据其实也以文件形式保存,而登录信息同样保存在文件中
MySQL的数据在Linux下默认路径是/var/lib/mysql

在这里插入图片描述

登录MySQL同样也可以查询用户信息
用户信息在数据库mysql中的user表中

--以一定形式显示数据
 select * from user\G;
*************************** 1. row ***************************
                  Host: localhost
                  User: root
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y
            Grant_priv: Y
       References_priv: Y
            Index_priv: Y
            Alter_priv: Y
          Show_db_priv: Y
            Super_priv: Y
 Create_tmp_table_priv: Y
      Lock_tables_priv: Y
          Execute_priv: Y
       Repl_slave_priv: Y
      Repl_client_priv: Y
      Create_view_priv: Y
        Show_view_priv: Y
   Create_routine_priv: Y
    Alter_routine_priv: Y
      Create_user_priv: Y
            Event_priv: Y
          Trigger_priv: Y
Create_tablespace_priv: Y
              ssl_type: 
            ssl_cipher: 
           x509_issuer: 
          x509_subject: 
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *BFD88FA31A402F8526DC79248D12DB3105F91D0B
      password_expired: N
 password_last_changed: 2023-09-27 21:29:37
     password_lifetime: NULL
        account_locked: N

提炼其中比较关键的几个属性

mysql> select host,user,authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *BFD88FA31A402F8526DC79248D12DB3105F91D0B |
+-----------+---------------+-------------------------------------------+

host:表示这个用户可以从哪个主机登录。localhost代表只能本地登录
user:用户名
authentication_string:登录密码通过password函数加密形成的秘钥字符串

一. 用户管理

1. 创建用户

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

案例;

mysql> create user 'ljh'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.03 sec)

mysql> select host,user,authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *BFD88FA31A402F8526DC79248D12DB3105F91D0B |
| localhost | ljh           | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+---------------+-------------------------------------------+

localhost:代表只能本地主机登录
%:代表可以从任意主键登录
具体主机ip:只能从该主机登录

注意:非常不建议给用户的主机名设置为%

2. 删除用户

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

删除时需要指明主机名,不然默认主机名是’%’

3. 修改用户密码

  • 自己改自己的密码
set password=password('新的密码');
  • root用户更改其他用户的密码
set password for '用户名'@'主机名'=password('新的密码');

二. 权限控制

MySQL有这些权限:

在这里插入图片描述

常用的也就是增删查改,create,drop,delete,alter,insert等等

1. 用户授权

刚创建的用户没有任何权限

语法:

grant 权限列表 on 库名.对象 to '用户名'@'登录主机';
  • 权限列表

单权限grant select on ...
多权限grant select,delete ... 权限之间用逗号隔开
全部权限grant all on ...

  • 指定对象

/ * . *:代表本系统中所有数据库的所有对象(表,视图,存储过程等)
库 . *:表示某个数据库中的所有对象

案例:

先创建一个用户

mysql> create user 'ljh'@'localhost' identified by '密码'

登录该用户

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+

此时我们查看不了其他的表
我们可以使用root用户赋权

mysql> grant create on *.* to 'ljh'@'localhost';

如此ljh用户就有查表建表的权限了

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| README_DBDF        |
| bit_index          |
| mysql              |
| performance_schema |
| scott              |
| sys                |
| test_demo          |
| tmp1               |
| tmp2               |
+--------------------+

如果发现赋权后,没有生效,执行如下指令

flush privileges;

如果还没有生效,可以尝试退出重登

2. 查看权限

语法:

mysql> show grants for 'ljh'@'localhost';
+------------------------------------------+
| Grants for ljh@localhost                 |
+------------------------------------------+
| GRANT CREATE ON *.* TO 'ljh'@'localhost' |
+------------------------------------------+

注意,root用户可以查看任意用户的权限,普通用户只能查看自己的权限
测试发现,如果一个普通用户有所有权限,也可以查看其他用户的权限

3. 回收权限

语法:

revoke 权限列表 on.对象名 from '用户名'@'登录主机';

ljh用户原本的权限:

mysql> show grants for 'ljh'@'localhost';
+--------------------------------------------------+
| Grants for ljh@localhost                         |
+--------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'ljh'@'localhost' |
+--------------------------------------------------+

我们回收drop权限

revoke drop on *.* from 'ljh'@'localhost';

在这里插入图片描述

因为原本是有all所有权限的,回收drop后,会显示剩余所有权限

结束语

感谢看到此处
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值