当前位置: 首页 > news >正文

MySQL——数据库的高级操作(二)用户管理(2)创建普通用户

        在创建新用户之前,可以通过 SELECT 语句查看 mysql.user 表中有哪些用户,查询结果如下:

mysql> USE mysql;
Database changed
mysql> SELECT Host, User, authentication_string FROM mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| Host      | User             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | *A3687CD1574820D919D6DF2AC07CA3AA9E5438BE                              |
+-----------+------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

        从上述结果可以看出,user 表中只有一个 root 用户信息。

        由于 MySQL中存储的数据较多,通常一个 root 用户是无法管理这些数据的,因此需要创建多个普通用户来管理不同的数据,创建普通用户有三种方式,接下来将针对这三种方式进行详细的讲解。

1、使用 GRANT 语句创建用户

        GRANT语句不仅可以创建新用户,还可以对用户进行授权,该语句会自动加载权限表,不需要手动刷新,而且安全、准确、错误少,因此,使用 GRANT 语句是创建用户最常用的方法。

        GRANT语句创建用户的语法格式如下:

GRANT privileges oN database.tableTo 'username'@'hostname'[IDENTIFIED BY [PASSWORD]'password'][, 'username'@'hostname [IDENTIFIED BY [PASSwORD]'password']]...

        上述语法格式中,privileges 参数表示该用户具有的权限信息,database.table 表示新用户的权限范围表,可以在指定的数据库、表上使用自己的权限,username参数是新用户的名称,hostname 参数是主机名,password 参数是新用户的密码。

        使用 GRANT 语句创建一个新用户,用户名为 user1、密码为 123,并授予该用户对chapter08.student 表有查询权限,GRANT 语句如下:

mysql> CREATE USER 'user1'@'localhost' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)

        上述语句执行成功后,可以通过 SELECT 语句验证用户是否创建成功,具体如下:

mysql> SELECT Host, User, authentication_string FROM mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| Host      | User             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | *A3687CD1574820D919D6DF2AC07CA3AA9E5438BE                              |
| localhost | user1            | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257                              |
+-----------+------------------+------------------------------------------------------------------------+
7 rows in set (0.00 sec)

        从执行结果可以看出,使用 GRANT语句成功地创建一个新用户 userl,但密码显示的并不是 123,而是一串字符,这是因为在创建用户时,MySQL会对用户的密码自动加密,以提高数据库的安全性。

        需要注意的是,用户使用 GRANT 语句创建新用户时,必须有 GRANT 权限。

2、使用 CREATE USER 语句创建用户

        使用 CREATE USER 语句创建新用户时,服务器会自动修改相应的授权表,但需要注意的是,该语句创建的新用户是没有任何权限的。CREATE USER语句创建用户的语法格式如下:

CREATE USER 'username'@'hostname'[IDENTIFIED BY [PASSWORD]'password'][,'username'@'hostname'[IDENTIFIED BY [PASSwORD]'password']]...

        上述语法格式中,username表示新创建的用户名,hostname 表示主机名,IDENTIFIED BY 关键字用于设置用户的密码,password 表示用户的密码,PASSWORD关键字表示使用哈希值设置密码,该参数是可选的,如果密码是一个普通的字符串,就不需要使用 PASSWORD 关键字。

        使用 CREATE USER 语句创建一个新用户,用户名为 user2、密码为 123,CREATEUSER 语句如下:

mysql> CREATE USER 'user2'@'localhost' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)

        上述语句执行成功后,可以通过 SELECT语句验证用户是否创建成功,具体如下:

mysql> SELECT Host, User, authentication_string FROM mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| Host      | User             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | *A3687CD1574820D919D6DF2AC07CA3AA9E5438BE                              |
| localhost | user1            | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257                              |
| localhost | user2            | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257                              |
+-----------+------------------+------------------------------------------------------------------------+
6 rows in set (0.00 sec)

        从执行结果可以看出,CREATE USER语句成功地创建了一个 user2 用户。需要注意的是,如果添加的用户已经存在,那么在执行 CREATE USER 语句时会报错。

3、使用 INSERT 语句创建用户

        通过前面的讲解可知,不管是CREATE USER语句还是 GRANT 语句,在创建用户时,实际上都是在 user 表中添加一条新的记录,因此,也可以使用 INSERT 语句直接在该表中添加一个用户。

        INSERT 语句创建用户的语法格式如下:

INSERT INTO mysql.user (Host,User, Password,ssl_cipher、x509_issuer、x509_subject)
VALUES('hostname','username',PASSWORD ('password'),'','','');

        上述语法格式中,mysql.user 参数表示操作的表,Host、User、Password、ssl_cipher、x509_issuer、x509_subject 为相应字段,PASSWORD()是一个加密函数,用于给密码加密。

        需要注意的是,使用 INSERT 语句创建用户时,通常只需添加 Host、User 和Password 这三个字段即可,其他的字段取其默认值,但由于 ssl_cipher、x509 issuer、x509_subject 字段是没有默认值的,因此 INSERT 语句创建用户时,还需要为这几个字段设置初始值。

        使用 INSERT 语句直接在 mysql. user 表中创建一个新用户,用户名为 user3、密码为 123,INSERT 语句如下:

mysql> CREATE USER 'user3'@'localhost' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.01 sec)mysql> GRANT SELECT ON chapter08.student TO 'user3'@'localhost';
Query OK, 0 rows affected (0.00 sec)

        上述语句执行成功后,就可以通过 SELECT 语句验证用户是否创建成功,具体如下:

mysql> SELECT Host, User, authentication_string FROM mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| Host      | User             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | *A3687CD1574820D919D6DF2AC07CA3AA9E5438BE                              |
| localhost | user1            | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257                              |
| localhost | user2            | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257                              |
| localhost | user3            | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257                              |
+-----------+------------------+------------------------------------------------------------------------+
7 rows in set (0.00 sec)

        从执行结果可以看出,使用 INSERT 语句成功地创建一个新用户 user3,但是由于INSERT 语句没有刷新权限表的功能,因此,user3 用户暂时是不能使用的,为了让当前用户生效,还需要手动刷新当前的权限表或重新启动 MySQL服务,刷新权限表的语句如下:

FLUSH PRIVILEGES;

        上述语句执行成功后,就可以使用 user3 用户登录 MySQL 数据库了。

相关文章:

MySQL——数据库的高级操作(二)用户管理(2)创建普通用户

在创建新用户之前,可以通过 SELECT 语句查看 mysql.user 表中有哪些用户,查询结果如下: mysql> USE mysql; Database changed mysql> SELECT Host, User, authentication_string FROM mysql.user; ----------------------------------…...

VIT论文阅读

把图片看成一个个16x16的patch堆起来的 摘要 卷积神经网络不是必备的,一个纯transformer表现也是非常好的 transformer?2500天tpu v3 介绍 大规模上预训练,小规模任务数据集上微调。扩大模型时候还没观察到瓶颈(还没出现过拟合…...

Python编程入门必备:def关键字与函数参数

在Python编程中,函数是组织代码、实现代码复用和模块化的基础单元。通过函数,可以将复杂的操作封装成独立的代码块,提高代码的可读性和维护性。本文将详细介绍Python中函数的定义和使用,包括def关键字、函数参数的各种类型以及函数…...

LiveKit的agent介绍

概念 LiveKit核心概念: Room(房间)Participant(参会人)Track(信息流追踪) Agent 架构图 ​ 订阅信息流 ​ agent交互流程 客户端操作 加入房间 房间创建方式 手动 赋予用户创建房间的…...

青龙面板 升级 及其 依赖更新修复 检测and日志删除等

青龙版本升级 先关闭服务 cd qinglong目录 docker-compose down 关闭 docker pull whyour/qinglong:版本号 //版本号自行选择,如果是为了修复错误,建议版本微升,不然就直接latest 启动 docker-compose up -d 进入容器&#xff0…...

坐牢第三十七天(Qt)

作业&#xff1a; 使用qt做一个闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPixmap> #include <QBitmap> #include <QLabel> //标签类 #include <QLineEdit> //行编辑器类 #include <QPushBu…...

Vidu 全球首发「主体参照」新功能,一键同步角色特征;GPT-4o 实时音频项目负责人离职创业丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…...

电子地图的主要功能与应用

电子地图&#xff0c;即数字地图&#xff0c;是利用计算机技术&#xff0c;以数字方式存储和查阅的地图。它不仅继承了传统纸质地图的基本功能&#xff0c;还通过现代科技手段实现了诸多创新应用。以下是电子地图的主要功能与应用&#xff1a; 一、主要功能 快速存取与显示&…...

基于Java+SpringBoot+Vue+MySQL的西安旅游管理系统网站

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的西安旅游管理系统网站【附源码文档】、…...

简单介绍 NVIDIA推出的图形处理单元(GPU)架构“安培架构“

概念 "安培架构"&#xff08;Ampere Architecture&#xff09;是 NVIDIA 推出的一款图形处理单元&#xff08;GPU&#xff09;架构&#xff0c;它是继图灵架构之后的下一代产品。安培架构最初在2020年发布&#xff0c;以其高性能和高效率而闻名&#xff0c;广泛应用…...

Qiskit:量子计算的Python工具包

Qiskit是由IBM开发的开源量子计算软件开发工具包&#xff0c;它提供了一套完整的工具&#xff0c;用于量子电路的设计、模拟、优化和执行。Qiskit支持量子算法的开发&#xff0c;并且可以与IBM的量子计算机硬件进行交互。 Qiskit的主要特点 量子电路设计&#xff1a;Qiskit允…...

Python——贪吃蛇

以下是一个简单的贪吃蛇游戏的Python代码示例&#xff1a; import pygame import time import random# 初始化 Pygame pygame.init()# 定义颜色 BLACK (0, 0, 0) WHITE (255, 255, 255) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)# 设置屏幕尺寸 screen_width …...

WPF 依赖属性与附加属性(面试长问)

在WPF中&#xff0c;**依赖属性&#xff08;Dependency Property&#xff09;和附加属性&#xff08;Attached Property&#xff09;**是WPF依赖属性系统的重要组成部分。它们虽然都基于依赖属性系统&#xff0c;但用途、定义方式和使用场景有显著差异。以下是两者的详细解释及…...

Python 中的各括号用法

括号的使用 在Python中&#xff0c;括号和中括号有不同的用途&#xff1a; 圆括号 ()&#xff1a; 函数调用&#xff1a;当你调用一个函数时&#xff0c;需要使用圆括号&#xff0c;即使没有参数。print("Hello, World!") # 调用print函数表达式分组&#xff1a;在…...

业务流程建模(BPM)的重要性及其应用

什么是业务流程建模&#xff08;BPM&#xff09;&#xff1f; 业务流程建模&#xff08;BPM&#xff09;是对企业内各项业务流程进行图形化描述的一种方法。它旨在通过可视化的方式帮助企业理解和分析现有的业务流程&#xff0c;从而发现潜在的问题并进行改进。BPM通常采用流程…...

isxdigit函数讲解 <ctype.h>头文件函数

目录 1.头文件 2.isxdigit函数使用 方源一把抓住VS2022&#xff0c;顷刻 炼化&#xff01; 1.头文件 以上函数都需要包括头文件<ctype.h> &#xff0c;其中包括 isxdigit 函数 #include<ctype.h> 2.isxdigit函数使用 isxdigit 函数是判断字符是否为十六进制数…...

Linux中安装NextCloud

切换为 root 账号 Ubutu 系统默认登录的用户为非 root 权限用户&#xff0c;为了能正常安装 nextCloud&#xff0c;需要切换为 root 账号。执行如下命令即可&#xff1a; sudo su 更新及安装基础包 请依次运行如下命令&#xff0c;有遇到询问的Is this ok [y/d/N]的时候直接键…...

【编程基础知识】什么是数据库事务

事务&#xff08;Transaction&#xff09;是数据库管理系统中的一个基本概念&#xff0c;用于确保数据库操作的原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability…...

移植案例与原理 - XTS子系统之应用兼容性测试用例开发

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 startup子系统之syspara_lite系统属性部件 &#xff08;1&#xff09; startup子系统之syspara_lite系统属性部件 &#xff08;2&#xff09; startup子系…...

关于linux里的df命令以及inode、数据块-stat链接数以及关于awk文本处理命令中内置函数sub、gsub、sprintf

一、关于linux里的df命令以及inode、数据块-stat链接数 Linux中df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计&#xff0c;平常这个命令也用得很多&#xff0c;但一般就是使用df -h查看各个分区的空间使用情况&#xff0c;除此外也可以使用df查看当前linux系统…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...