【MySQL】(12)用户管理

news/2024/11/8 2:49:28/

文章目录

  • 用户信息
  • 创建用户
  • 用户权限
    • 给用户授权
    • 回收权限
  • 删除用户
  • 修改密码

用户信息

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

MariaDB [mysql]> select host, user, authentication_string from user;
+----------------+------+-----------------------+
| host           | user | authentication_string |
+----------------+------+-----------------------+
| localhost      | root |                       |
| vm-4-13-centos | root |                       |
| 127.0.0.1      | root |                       |
| ::1            | root |                       |
| localhost      |      |                       |
| vm-4-13-centos |      |                       |
+----------------+------+-----------------------+
6 rows in set (0.01 sec)
  • host 表示这个用户可以从哪个主机登陆,如果是 localhost,则表示只能从主机登陆
  • user 用户名
  • authentication_string 加密后的用户密码(我们到现在还没设置过密码,所以是空白)
  • *_priv 用户拥有的权限

创建用户

  1. 使用具有管理员权限的 MySQL 用户登录到 MySQL 服务器。

  2. 执行以下 SQL 命令创建用户:

    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
    

    在上述命令中,将 'username' 替换为要创建的用户名,'localhost' 替换为用户允许登录的主机名或 IP 地址,'password' 替换为用户的密码。

    例:创建用户名为 “john”,密码为 “password123” 的用户,并允许该用户从任何主机登录,可以执行以下命令:

    CREATE USER 'john'@'%' IDENTIFIED BY 'password123';
    
  3. 执行以下命令使更改生效:

    FLUSH PRIVILEGES;
    

用户权限

下表列出了 MySQL 数据库中常见的权限及其描述:

权限描述
ALL PRIVILEGES所有权限,包括创建、修改和删除数据库、表以及执行所有操作权限
CREATE创建新数据库或表
ALTER修改已存在的数据库或表
DROP删除数据库或表
SELECT查询(读取)数据
INSERT插入新数据
UPDATE更新(修改)已有数据
DELETE删除数据
GRANT OPTION授予或撤销权限
INDEX创建或删除索引
CREATE TEMPORARY TABLES创建临时表
LOCK TABLES锁定表
EXECUTE执行存储过程或函数
SHOW DATABASES查看数据库列表
SHOW VIEW查看视图定义
TRIGGER创建、修改和删除触发器
REFERENCES创建外键约束

给用户授权

语法

GRANT privileges ON database_name.table_name TO 'username'@'localhost' [identified by '密码'];

在上述命令中,privileges 是要授予的权限列表,可以使用逗号分隔多个权限。database_name 是要授权的数据库名称,table_name 是要授权的表名称。'username'@'localhost' 是要授权的用户名和主机名。

  • *.* 表示本系统的所有数据库的所有对象(表、视图、存储过程等)
  • 库.* 表示某个数据库的所有对象(表、视图、存储过程等)
  • identified by 可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

  • 授予用户对所有数据库的完全访问权限:

    GRANT ALL [PRIVILEGES] ON *.* TO 'username'@'localhost';
    
  • 授予用户对特定数据库的所有权限:

    GRANT ALL [PRIVILEGES] ON database_name.* TO 'username'@'localhost';
    
  • 授予用户对特定表的选择和插入权限:

    GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'localhost';
    

回收权限

语法

REVOKE privileges ON database_name.table_name FROM 'username'@'host';

在上述命令中,privileges 是要回收的权限,database_name.table_name 是要回收权限的数据库和表的名称,'username'@'host' 是要回收权限的用户名和主机。

  • 回收用户对所有数据库的所有权限:

    REVOKE ALL [PRIVILEGES] ON *.* FROM 'username'@'host';
    
  • 回收用户对特定数据库的所有权限:

    REVOKE ALL [PRIVILEGES] ON database_name.* FROM 'username'@'host';
    
  • 回收用户对特定表的选择和插入权限:

    REVOKE SELECT, INSERT ON database_name.table_name FROM 'username'@'host';
    
  • 撤销用户的所有权限:

    REVOKE ALL [PRIVILEGES] ON *.* FROM 'username'@'host';
    

删除用户

  1. 使用具有管理员权限的 MySQL 用户登录到 MySQL 服务器。

  2. 执行以下 SQL 命令删除用户:

    DROP USER 'username'@'localhost';
    
  3. 执行以下命令以使更改生效:

    FLUSH PRIVILEGES;
    

修改密码

修改指定用户的密码:

方法一:使用 ALTER USER 命令

  1. 使用具有管理员权限的 MySQL 用户登录到 MySQL 服务器。

  2. 执行以下 SQL 命令修改用户密码:

    ALTER USER 'username'@'localhost' IDENTIFIED BY 'new_password';
    
  3. 执行以下命令以使更改生效:

    FLUSH PRIVILEGES;
    

方法二:使用 SET PASSWORD 命令

  1. 使用具有管理员权限的 MySQL 用户登录到 MySQL 服务器。

  2. 执行以下 SQL 命令修改指定用户的密码:

    SET PASSWORD FOR 'username'@'localhost' = PASSWORD('new_password');
    
  3. 执行以下命令以使更改生效:

    FLUSH PRIVILEGES;
    

自己改自己密码:

SET PASSWORD = PASSWORD('new_password');

http://www.ppmy.cn/news/87581.html

相关文章

一文掌握python列表的所有使用方法(零基础学python(一))

列表 Python 中的列表是一种可变的数据类型,它可以存储多个值,并且可以随时添加、删除或修改其中的元素。以下是 Python 列表的基本操作和示例代码: 创建列表 可以使用方括号 [] 来创建一个空列表,也可以在方括号中添加元素来创建一个非空列表。例如: empty_list = [] …

Three.js深度冲突(模型闪烁)与解决方案

Mesh面重合渲染测试 下面代码创建两个重合的矩形平面Mesh,通过浏览器预览,当你旋转三维场景的时候,你会发现模型渲染的时候产生闪烁。 这种现象,主要是两个Mesh重合,电脑GPU分不清谁在前谁在后,这种现象&a…

【使用教程】NIMC2000控制器EtherCAT通讯下SDO位置清零

NIMC2000控制器是一种高性能的运动控制器,可通过EtherCAT通讯进行控制。在使用过程中,有时需要将位置清零,这可以通过SDO命令实现。 首先,需要确保NIMC2000控制器已经通过EtherCAT连接到了主机。然后,使用SDO命令将位…

Student实体类实现HashSet集合,唯一性

Student类如下所示: package com.test.Test07;import java.util.Objects;public class Student {private int age;private String name;public int getAge() {return age;}public void setAge(int age) {this.age age;}public String getName() {return name;}pub…

澳洲学生用ChatGPT代写?澳洲多所高校使用全新反击工具检测

朋友们听句劝 ChatGPT可太危险了 ChatGPT有多火?据2月1日瑞银发布的一项研究报告显示,仅仅发布两个月,ChatGPT月活跃用户已达1亿,这是历史上增长速度最快的应用。要知道达成1亿用户的时间,Instagram用了2.5年&#xf…

Java并发体系-锁与同步-[2]

可见性设计的硬件 从硬件的级别来考虑一下可见性的问题 **1、第一个可见性的场景:**每个处理器都有自己的寄存器(register),所以多个处理器各自运行一个线程的时候,可能导致某个变量给放到寄存器里去,接着…

redis缓存数据库的使用

一,什么是redis ?为什么要用它? 简单介绍: Redis是开源的key-value缓存框架,由c语言编写,也是一款高性能的框架提供多种语言的API 。 SET 每秒11万次 取get每秒81000次。 数据完全存储在内存空间中&…

基于html+css的图片展示92

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…