当前位置:首页 > 编程笔记 > 正文
已解决

【MySQL】用户管理权限控制

来自网友在路上 170870提问 提问时间:2023-11-07 16:20:33阅读次数: 70

最佳答案 问答题库708位专家为你答疑解惑

文章目录

  • 前言
  • 一. 用户管理
    • 1. 创建用户
    • 2. 删除用户
    • 3. 修改用户密码
  • 二. 权限控制
    • 1. 用户授权
    • 2. 查看权限
    • 3. 回收权限
  • 结束语

前言

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

在这里插入图片描述

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

--以一定形式显示数据select * from user\G;
*************************** 1. row ***************************Host: localhostUser: rootSelect_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: YGrant_priv: YReferences_priv: YIndex_priv: YAlter_priv: YShow_db_priv: YSuper_priv: YCreate_tmp_table_priv: YLock_tables_priv: YExecute_priv: YRepl_slave_priv: YRepl_client_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: YCreate_user_priv: YEvent_priv: YTrigger_priv: Y
Create_tablespace_priv: Yssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: *BFD88FA31A402F8526DC79248D12DB3105F91D0Bpassword_expired: Npassword_last_changed: 2023-09-27 21:29:37password_lifetime: NULLaccount_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后,会显示剩余所有权限

结束语

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

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【MySQL】用户管理权限控制":http://eshow365.cn/6-34604-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!