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 进入容器࿰…...
坐牢第三十七天(Qt)
作业: 使用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 开发者日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…...
电子地图的主要功能与应用
电子地图,即数字地图,是利用计算机技术,以数字方式存储和查阅的地图。它不仅继承了传统纸质地图的基本功能,还通过现代科技手段实现了诸多创新应用。以下是电子地图的主要功能与应用: 一、主要功能 快速存取与显示&…...
基于Java+SpringBoot+Vue+MySQL的西安旅游管理系统网站
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的西安旅游管理系统网站【附源码文档】、…...
简单介绍 NVIDIA推出的图形处理单元(GPU)架构“安培架构“
概念 "安培架构"(Ampere Architecture)是 NVIDIA 推出的一款图形处理单元(GPU)架构,它是继图灵架构之后的下一代产品。安培架构最初在2020年发布,以其高性能和高效率而闻名,广泛应用…...
Qiskit:量子计算的Python工具包
Qiskit是由IBM开发的开源量子计算软件开发工具包,它提供了一套完整的工具,用于量子电路的设计、模拟、优化和执行。Qiskit支持量子算法的开发,并且可以与IBM的量子计算机硬件进行交互。 Qiskit的主要特点 量子电路设计:Qiskit允…...
Python——贪吃蛇
以下是一个简单的贪吃蛇游戏的Python代码示例: 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中,**依赖属性(Dependency Property)和附加属性(Attached Property)**是WPF依赖属性系统的重要组成部分。它们虽然都基于依赖属性系统,但用途、定义方式和使用场景有显著差异。以下是两者的详细解释及…...
Python 中的各括号用法
括号的使用 在Python中,括号和中括号有不同的用途: 圆括号 (): 函数调用:当你调用一个函数时,需要使用圆括号,即使没有参数。print("Hello, World!") # 调用print函数表达式分组:在…...
业务流程建模(BPM)的重要性及其应用
什么是业务流程建模(BPM)? 业务流程建模(BPM)是对企业内各项业务流程进行图形化描述的一种方法。它旨在通过可视化的方式帮助企业理解和分析现有的业务流程,从而发现潜在的问题并进行改进。BPM通常采用流程…...
isxdigit函数讲解 <ctype.h>头文件函数
目录 1.头文件 2.isxdigit函数使用 方源一把抓住VS2022,顷刻 炼化! 1.头文件 以上函数都需要包括头文件<ctype.h> ,其中包括 isxdigit 函数 #include<ctype.h> 2.isxdigit函数使用 isxdigit 函数是判断字符是否为十六进制数…...
Linux中安装NextCloud
切换为 root 账号 Ubutu 系统默认登录的用户为非 root 权限用户,为了能正常安装 nextCloud,需要切换为 root 账号。执行如下命令即可: sudo su 更新及安装基础包 请依次运行如下命令,有遇到询问的Is this ok [y/d/N]的时候直接键…...
【编程基础知识】什么是数据库事务
事务(Transaction)是数据库管理系统中的一个基本概念,用于确保数据库操作的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability…...
移植案例与原理 - XTS子系统之应用兼容性测试用例开发
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 startup子系统之syspara_lite系统属性部件 (1) startup子系统之syspara_lite系统属性部件 (2) startup子系…...
关于linux里的df命令以及inode、数据块-stat链接数以及关于awk文本处理命令中内置函数sub、gsub、sprintf
一、关于linux里的df命令以及inode、数据块-stat链接数 Linux中df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计,平常这个命令也用得很多,但一般就是使用df -h查看各个分区的空间使用情况,除此外也可以使用df查看当前linux系统…...
洛谷P7071 ‘优秀的拆分’背后:如何用对拍程序验证你的C++代码正确性(附Win10批处理脚本)
洛谷P7071 优秀的拆分背后:如何用对拍程序验证你的C代码正确性(附Win10批处理脚本) 在编程竞赛中,写出能通过样例的代码只是第一步。真正考验选手的是代码在各种边界条件下的稳定性。很多选手都有这样的经历:提交代码后…...
基于单相全波晶闸管的基本交流电压控制器,带电阻负载(Simulink仿真实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
WorkshopDL:打破平台壁垒,免费获取Steam创意工坊模组的终极方案
WorkshopDL:打破平台壁垒,免费获取Steam创意工坊模组的终极方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为Epic、GOG等平台购买的游戏无法使…...
<数据集>yolo 易拉罐识别<目标检测>
数据集下载链接https://download.csdn.net/download/qq_53332949/92882375数据集格式:VOCYOLO格式 图片数量:3253张 标注数量(xml文件个数):3253 标注数量(txt文件个数):3253 标注类别数:1 标注类别名称ÿ…...
CircuitPython HID实战:用Python轻松打造自定义键盘鼠标与数据记录仪
1. 项目概述与核心价值如果你玩过一些老游戏,或者用过一些专业软件,可能会遇到一个头疼的问题:你想用一个自制的硬件控制器来操作它,但软件根本不支持外接硬件,只认键盘鼠标。以前遇到这种情况,要么放弃&am…...
BLE扫描器开发实战:从原始字节解析到IN100设备高效调试
1. 项目概述:从芯片到应用,一个BLE扫描器的诞生去年五月,我们团队独立开发的NanoBeacon™ BLE扫描器移动应用在应用宝正式上架了。这件事本身可能不算惊天动地,但对我们这些从底层芯片一路摸爬滚打上来的工程师来说,意…...
OPS-C可插拔电脑主机:模块化设计如何革新部署与运维
1. 项目概述:为什么我们需要OPS-C这样的可插拔电脑主机?如果你负责过学校机房、企业会议室或者数字标牌网络的维护,一定对传统电脑主机的部署和运维深有体会。每次设备升级或故障排查,都得钻到桌子底下,面对一堆缠绕的…...
Awoo Installer:Switch游戏安装终极指南 - 轻松搞定NSP、NSZ、XCI、XCZ格式
Awoo Installer:Switch游戏安装终极指南 - 轻松搞定NSP、NSZ、XCI、XCZ格式 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 想要在Nint…...
AI应用开发框架nuwax:从快速构建到生产部署全解析
1. 项目概述:一个AI驱动的开源应用框架 最近在开源社区里,我注意到一个名为 nuwax-ai/nuwax 的项目开始受到一些关注。乍一看这个标题,它像是一个GitHub仓库的地址,由 nuwax-ai 这个组织或用户创建,项目名称为 nu…...
精通yum/dnf:从依赖地狱到高效Linux软件包管理
1. 从“依赖地狱”到“一键管理”:为什么你需要精通yum/dnf在Linux世界里,尤其是Red Hat系(RHEL、CentOS、Fedora、Rocky Linux、AlmaLinux)的用户,软件包管理是绕不开的日常。如果你还在用rpm -ivh一个接一个地手动安…...
