数据库(MySQL)—— 初识和创建用户

数据库(MySQL)—— 初识

  • 什么是数据库
  • 数据库的种类
  • 创建用户
    • mysql -h 主机名或IP地址 -u 用户名 -p 登录mysql
    • SELECT USER(); 查看当前用户
    • 切换用户
    • GRANT ALL PRIVILEGES ON 赋予用户权限
  • REVOKE 撤销权限
      • 示例
      • 注意事项
  • MySQL的图形化界面工具
    • 查看所有用户
  • 删除用户

我们今天进入数据库的学习:

什么是数据库

数据库是一个专为高效管理和存储数据而设计的系统,它允许以结构化方式组织、存储、检索和管理大量信息。在计算机科学中,数据库不仅仅是一个数据容器,它还包括一套管理这些数据的规则、方法和技术,这通常通过数据库管理系统(DBMS)来实现。

具体来说,数据库的核心特点包括:

  1. 数据结构化:数据按照特定的数据模型(如关系型、文档型、图形型等)组织,确保数据的一致性和可预测性。
  2. 数据存储与管理:数据库提供了一个中心位置来存储数据,使得数据可以被多个用户或应用程序共享,并且保证数据的安全性与完整性。
  3. 数据操作与查询:通过数据库管理系统,用户可以执行增删改查(CRUD)操作,即创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据。
  4. 数据访问控制:确保只有经过授权的用户才能访问或修改数据,维护数据的安全性。
  5. 数据独立性:数据库设计使得数据的逻辑结构与物理存储方式相分离,使得数据的存储方式改变时,不影响到应用程序对数据的访问。

简而言之,数据库就像是一个高度组织化和管理严格的电子文件柜,它使数据的存储、检索和管理变得高效而有序,是现代信息技术中不可或缺的组成部分。

数据库的种类

以下是一些知名的数据库软件:

  1. Oracle Database - 由甲骨文公司开发的关系型数据库管理系统,广泛应用于企业环境,以其高性能、可靠性和丰富的功能集著称。
  2. MySQL - 一个开源的关系型数据库管理系统,适用于各种规模的应用程序,从个人项目到大型网站均能胜任。MySQL以其易用性、高效率和成本效益受到欢迎。
  3. Microsoft SQL Server - 微软开发的企业级数据库管理系统,适合Windows平台,提供强大的数据处理能力,支持复杂的事务处理和商业智能应用。
  4. PostgreSQL - 另一款开源对象关系型数据库系统,以其稳定性、合规性(如ACID兼容)和强大的扩展性受到开发者青睐。
  5. MongoDB - 一种流行的非关系型(NoSQL)数据库,特别适合处理大规模的、半结构化的数据,如Web应用和实时数据分析。
  6. SQLite - 轻量级的嵌入式数据库引擎,常用于移动设备和小型应用,因其零配置、无服务器要求而广受欢迎。
  7. MariaDB - 作为MySQL的一个分支,MariaDB由MySQL的原始开发者创立,旨在保持开源精神,提供更多的功能和性能改进。
  8. IBM DB2 - IBM开发的关系型数据库,适用于大型企业环境,特别是在需要高级数据处理和分析的场景下。
  9. Amazon Web Services (AWS) Aurora - AWS提供的云原生关系型数据库服务,设计用于与MySQL和PostgreSQL兼容,强调高性能和高可用性。
  10. Google Cloud Spanner - Google的全球分布式关系型数据库服务,提供强一致性、水平扩展和高性能。

此外,还有其他一些数据库软件如Redis(键值存储数据库)、Elasticsearch(搜索引擎和分析数据库)以及上述提及的一些云存储解决方案(如天翼云盘、百度网盘等),虽然它们在功能和用途上可能与传统意义上的数据库软件有所不同,但也在各自的领域内具有很高知名度。

我们这里以MySQL进行学习:

创建用户

MySQL有个不一样的地方在于,别的编程软件一来就是可以直接上手写代码,但是MySQL 要区分当前操作的人是谁,所以有了用户的概念。

在安装好MySQL之后,我们一般的用户是root,root是超级用户,拥有极高的权限,我们一般第一次使用MySQL时,就是以root用户进行操作的。

在这里插入图片描述之后我们就可以依据这个root账号来进行登录:

mysql -h 主机名或IP地址 -u 用户名 -p 登录mysql

mysql -h 主机名或IP地址 -u 用户名 -p

比如我想以root身份登录:

mysql -h localhost -u root -p

在这里插入图片描述

我们就成功登录了,但是我们还是有一个疑虑:这个localhost是什么鬼:
在这里插入图片描述
这个其实是创建用户时添加的限制条件,指定用户可以从哪里可以登录数据库

在MySQL中创建用户时,localhost 是指用户可以从本地主机连接到MySQL服务器。实际上,除了 localhost 之外,你还可以指定其他主机名或者IP地址来控制用户可以从哪些位置访问数据库,这让MySQL的用户权限管理更加灵活。以下是创建用户时可以采用的几种主机名/地址指定方式:

  1. 特定IP地址:
    你可以指定一个确切的IP地址,如 'username@192.168.1.100',这限制用户只能从该IP地址连接。
  2. IP地址范围:
    使用通配符指定一个IP地址段,例如 'username@192.168.1.%' 允许用户从 192.168.1.0/24 子网内的任何地址连接。
  3. 网段:
    甚至可以更广泛地指定,如 'username@10.0.0.0/8',允许来自整个 10.0.0.0 网段的所有IP地址的连接。
  4. % (任意主机):
    如果希望用户能够从任意远程主机连接,可以使用 'username@%'。这种方式提供了最大的灵活性,但也可能带来安全风险,因此需谨慎使用。
  5. 域名:
    除了IP地址,你还可以使用域名,如 'username@example.com',这适用于知道用户将从特定域名下的服务器连接的情况。

创建用户的基本命令格式通常是这样的:

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

其中,host 部分可以用上述提到的各种方式来指定。记得在创建用户后,通常还需要通过 GRANT 命令来分配具体的数据库访问权限给该用户。

我们可以以上面的方式来创建一个用户:

在这里插入图片描述
我创建了一个用户sun,规定只能从本机上进行登录,密码的是123456。

SELECT USER(); 查看当前用户

SELECT USER(); 用来查看当前用户
在这里插入图片描述
如果还想看这个用户的权限可以使用SHOW GRANTS FOR CURRENT_USER;
在这里插入图片描述在这里插入图片描述

这样可以列出该用户的所有权限,可以看到root@localhost的权限非常高了。

切换用户

切换用户,我们要先退出当前用户,可以使用exit或者**\q**:
在这里插入图片描述在这里插入图片描述我们登录一下我们刚刚创建的新用户:
在这里插入图片描述查看一下当前用户:
在这里插入图片描述
我们看一下他的权限:
在这里插入图片描述这行代码的意思是:

这个MySQL命令授予了一个名为sun的用户在localhost上执行某些操作的权限

GRANT USAGE ON *.* TO `sun`@`localhost`;

让我们详细解释这个命令:

  • GRANT:这是用于授予用户权限的MySQL命令。
  • USAGE:这是要授予用户的权限。在这种情况下,它允许用户连接到MySQL服务器,但不授予任何其他权限。
  • ON *.*:这表示权限将应用于所有数据库(*)和所有表(*)。
  • `sun`@`localhost`:这是要授予权限的用户。用户名为sun,主机名为localhost

执行此命令后,名为sun的用户将能够在localhost上连接到MySQL服务器,但不能执行任何其他操作,如查询、插入、更新等。要为该用户授予其他权限,您需要使用类似的GRANT命令并指定相应的权限和数据库/表。例如,要为sun用户授予对名为mydb的数据库的所有权限,可以使用以下命令:

GRANT ALL PRIVILEGES ON `mydb`.* TO `sun`@`localhost`;

在执行GRANT命令后,不要忘记使用FLUSH PRIVILEGES;命令使更改生效。

执行赋予权限的命令要在root账户下进行,所以我们先退出来,进入root账户:

GRANT ALL PRIVILEGES ON 赋予用户权限

我们进入到root账户:
在这里插入图片描述我们将root的对所有数据库的所有表的所有权限赋予给sun:
在这里插入图片描述
使用FLUSH PRIVILEGES;让命令立即生效:
在这里插入图片描述
我们重新以sun的身份登入:
在这里插入图片描述发现sun的权限已经齐全了。

REVOKE 撤销权限

REVOKE 命令在MySQL中用于撤销先前赋予给用户的数据库权限。它的基本语法结构类似于 GRANT 命令,用于减少或取消用户对数据库或表的操作权限。基本格式如下:

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

各部分说明与 GRANT 命令相似:

  • privileges:你想要撤销的权限,可以是之前赋予的任意权限或权限组合。
  • database_name.table_name:指定权限撤销的数据库和表。使用 *.* 表示撤销所有数据库的所有表的相应权限。
  • 'username'@'host':指定权限被撤销的用户及其允许连接的主机来源。

示例

  1. 撤销特定数据库的所有权限:
REVOKE ALL PRIVILEGES ON mydb.* FROM >'username'@'localhost';

这撤销了 username 用户从本地主机对 mydb 数据库的所有权限。

  1. 撤销特定表的读写权限:
REVOKE INSERT, UPDATE ON mydb.mytable FROM >'username'@'%';

从所有主机撤销了 usernamemydb 数据库中 mytable 表的插入和更新权限。

  1. 撤销全局查询权限:
REVOKE SELECT ON *.* FROM 'readonly_user'@'localhost';

撤销了 readonly_user 从本地主机查询所有数据库的权限。

注意事项

  • 即时性:权限撤销操作立即生效,但已建立的连接可能直到断开重连后才受影响。
  • WITH GRANT OPTION:
    如果之前使用 WITH GRANT OPTION 授予权限,撤销时应明确指出,以取消该用户转授权限的能力。
  • 权限层次:
    有时,权限的撤销可能不会按预期工作,特别是当用户属于拥有更广泛权限的组时。确保检查并考虑用户所属的角色和组的权限。

在执行 REVOKE 命令前,务必确认你要撤销的权限是正确的,以免影响数据库的正常运作。如同 GRANT,执行这些操作通常需要 root 或具有足够权限的用户身份。

MySQL的图形化界面工具

MySQL也有丰富的图形化界面工具:

  1. phpMyAdmin: 一个开源的、基于Web的MySQL管理工具,广泛应用于共享主机环境。它支持多语言,包括中文,提供了基本的数据库管理功能,如创建数据库、数据表,执行SQL查询,管理用户权限等。
  2. MySQL Workbench: MySQL官方提供的一个强大的图形化工具,适用于数据库设计和管理。它支持数据库建模、SQL开发、数据导入导出、性能分析和服务器管理等高级功能,分为免费的社区版和付费的商业版,支持Windows、Linux和macOS。
  3. Navicat: 一个跨平台的数据库管理工具,支持MySQL以及其他多种数据库类型。它提供了一个直观的界面来进行数据库管理、数据迁移、备份恢复、数据同步等操作,并且有中文界面和免费版本。
  4. SQLyog: 由Webyog开发,专为MySQL设计的图形化管理工具。它拥有快速、简洁的界面,支持多种高级功能,如智能数据导入导出、数据备份恢复、SQL查询构建器等。
  5. DBeaver: 一款免费开源的通用数据库管理工具,支持多种数据库类型,包括MySQL。它提供了丰富的数据编辑、浏览、ER图生成等功能,并且支持插件扩展,适合跨数据库管理场景。
  6. HeidiSQL: 一个轻量级的MySQL和MariaDB客户端,适合Windows用户,也支持一些其他数据库。它简单易用,功能包括数据浏览、编辑、SQL查询执行、数据库备份等。
  7. DataGrip: 来自JetBrains,是一个功能强大的数据库IDE,支持多种数据库管理系统,包括MySQL。它以其智能代码补全、高效查询构建、数据导航和操作界面而受到开发者喜爱。

这里我们以DataGrip为例:
进入DataGrip,点击加号:
在这里插入图片描述选择MySQL:

在这里插入图片描述在框中填入用户名和密码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们可以注意到左上方的这个图标:
在这里插入图片描述这里可以选择我们以前创建的数据库:

在这里插入图片描述在这里插入图片描述这样我们就可以以sun的用户身份对下面的数据库进行操作。

查看所有用户

在MySQL中,要查看所有用户,您可以查询mysql数据库中的user

SELECT User, Host FROM mysql.user;

这将返回一个包含所有用户及其主机名的列表。如果您还想查看每个用户的权限和授权信息,可以使用以下查询:

SELECT User, Host, authentication_string FROM mysql.user;

这将显示每个用户的用户名、主机名和加密后的密码。请注意,authentication_string列可能为空,这意味着用户没有设置密码。

在执行这些查询时,请确保您具有足够的权限来访问mysql.user表。通常,只有具有PROCESS权限的用户才能查看其他用户的权限和授权信息。

在这里插入图片描述

删除用户

在MySQL中,要删除一个用户,可以使用DROP USER命令

DROP USER 'username'@'hostname';

username替换为要删除的用户的用户名,将hostname替换为要删除的用户的主机名。例如,要删除名为testuser的用户,主机名为localhost,可以使用以下命令:

DROP USER 'testuser'@'localhost';

在执行DROP USER命令后,请确保使用FLUSH PRIVILEGES;命令使更改生效。

请注意,在删除用户之前,请确保您具有足够的权限来执行此操作。通常,只有具有CREATE USERDROP USER权限的用户才能删除其他用户。在删除用户时,请确保不会意外删除重要的系统用户或其他用户。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/600241.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ldap对接jenkins

ldap结构 配置 - jenkins进入到 系统管理–>全局安全配置 - 安全域 选择ldap - 配置ldap服务器地址,和配置ldap顶层唯一标识名 配置用户搜索路径 - 配置管理员DN和密码 测试认证是否OK

【xxl-job | 第三篇】SpringBoot整合xxl-job

文章目录 3.SpringBoot整合xxl-job3.1定时任务服务配置3.1.1导入maven依赖3.1.2yml配置3.1.3XxlJobConfig配置类3.1.4定时任务类 3.2xxl-job配置3.2.1新增执行器3.2.2新增任务3.2.3执行任务3.2.4查看日志3.2.5查看任务后台日志 3.3小结 3.SpringBoot整合xxl-job 3.1定时任务服…

B端UX/UI设计面试作品集分层源文件figmasketch模板

当您考虑找工作时,是否曾质疑过项目复盘作品集的重要性?实际上,一份精心准备的项目复盘作品集对于求职者来说具有无可估量的价值,特别是对于设计师这一职业领域。 以下所述或许对您而言已非陌生。您的作品集应当成为您专业技能与…

嵌入式linux学习第三天汇编语言点灯

嵌入式linux学习第三天汇编语言点灯 今天学习如何在linux板子上点灯。 I.MX6U GPIO 详解 我们发现I.MX6U GPIO是分为两类的,:SNVS 域的和通用的。在讨论i.MX6U或类似的复杂微处理器时,了解其GPIO(通用输入输出)引脚…

vivado Zynq UltraScale+ MPSoC 比特流设置

Zynq UltraScale MPSoC 比特流设置 下表所示 Zynq UltraScale MPSoC 器件的器件配置设置可搭配 set_property <Setting> <Value> [current_design] Vivado 工具 Tcl 命令一起使用。

科研学习|可视化——ggplot2版本的网络可视化

ggplot2是R语言中一个非常流行的数据可视化包&#xff0c;它也可以用于网络可视化。以下是三个基于ggplot2并专门用于网络可视化的R包&#xff1a; ggnet2: 这个包的使用方法与传统的plot函数相似&#xff0c;易于使用。更多信息可在其官方页面查看&#xff1a;ggnet2 geomnet…

python+flask+ldap3搭建简易版IDaaS系统(前端站点)

Python工具开源专栏 Py0006 pythonflaskldap3搭建简易版IDaaS系统&#xff08;前端站点&#xff09; Python工具开源专栏前言目录结构前端网站的部分演示首页查询数据数据同步数据关联查询系统日志 完整代码已在GitHub上开源 前言 pythonflaskldap3搭建简易版IDaaS系统的前端站…

VALSE 2024 Tutorial内容总结--开放词汇视觉感知

视觉与学习青年学者研讨会&#xff08;VALSE&#xff09;旨在为从事计算机视觉、图像处理、模式识别与机器学习研究的中国青年学者提供一个广泛而深入的学术交流平台。该平台旨在促进国内青年学者的思想交流和学术合作&#xff0c;以期在相关领域做出显著的学术贡献&#xff0c…

【Linux进程信号(一)】信号概念/产生/保存/处理

目录 入门 前&后台进程 前台进程&#xff1a; 后台进程 常用命令 ./XXX & fg命令 & bg命令 Ctrl c / Ctrl \ 信号的概念 信号的产生 1.键盘产生 2.系统调用指令 3.异常 4.软件条件 信号的保存 信号的处理 1.信号屏蔽字 2.未决信号表 3.信号处理…

layui 数据表格 自动定位新增行位置

由于数据表格新增行后没有到新增到当前位置 继续增加的需求&#xff1a; 因为自己是新增行后到最后一行的 所以 就定位到最后一行 并且 高亮 高亮颜色浅 可自行更改 整理了一下 可根据 情况 修改 // 初始化滚动条位置变量 let tableScroll {scrollTob: 0,scrollLeft: 0,…

【busybox记录】【shell指令】comm

目录 内容来源&#xff1a; 【GUN】【comm】指令介绍 【busybox】【comm】指令介绍 【linux】【comm】指令介绍 使用示例&#xff1a; 逐行比较两个排序后的文件 - 默认输出 逐行比较两个排序后的文件 - 如果一个文件的排序有问题&#xff0c;那么反错&#xff08;默认&…

口感与风味的完善结合:精酿啤酒的多样风格

啤酒的世界是丰富多彩的&#xff0c;不同的啤酒有着各自与众不同的口感和风味。而Fendi club啤酒&#xff0c;作为精酿啤酒的代表&#xff0c;以其多样化的风格和卓着的口感&#xff0c;吸引了无数啤酒爱好者的目光。 Fendi club啤酒的多样风格&#xff0c;首先体现在其原料的选…

医药垃圾分类管理系统|基于SSM医药垃圾分类管理系统的系统设计与实现(源码+数据库+文档)

医药垃圾分类管理系统 目录 基于SSM医药垃圾分类管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统登录模块 2管理员模块实现 3用户模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博…

1天搞定SpringBoot+Vue全栈开发 (8)前端路由VueRouter(进行组件切换)

1.VueRouter安装与使用 2.参数传递 创建路由组件 在项目中定义Discover.vue、Friends.vue、My.vue三个组件&#xff0c;将来要使用vue-router来控制它们的展示与切换&#xff1a; Discover.vue <template><div><h1>发现音乐</h1></div> <…

PE文件(四)FileBuffer-ImageBuffer

文件执行的总过程 当文件从硬盘中读入虚拟内存&#xff08;FileBuffer&#xff09;中时&#xff0c;文件数据会被原封不动的复制一份到虚拟内存中&#xff0c;然后进行拉伸对齐。此时虚拟内存中文件数据叫做文件印象或者内存印象&#xff0c;即ImageBuffer。此时ImageBuffer中…

Prompt提示词教程 | 提示工程指南 | 提示词示例 入门篇

在上一节中&#xff0c;我们介绍并给出了如何赋能大语言模型的基本示例。如果还没看而且是刚入门的同学建议看下&#xff0c;有个基本概念。 Prompt提示词教程 | 提示工程指南 | 提示工程简介https://blog.csdn.net/HRG520JN/article/details/138523705在本节中&#xff0c;我…

crossover怎么打开软件 mac怎么下载steam crossover下载的软件怎么运行

CrossOver是一款Mac和Linux平台上的类虚拟机软件&#xff0c;通过CrossOver可以运行Windows的可执行文件。如果你是Mac用户且需要使用CrossOver&#xff0c;但是不知道CrossOver怎么打开软件&#xff0c;如果你想在Mac电脑上玩Windows游戏&#xff0c;但不知道怎么下载Steam&am…

free5gc+ueransim配置

ueransim已完成配置&#xff0c;可以观察到在make后&#xff0c;ueransim的build下生成以下几个文件 nr-gnb-------------5G gnb&#xff08;RAN&#xff09;的主要可执行文件 nr ue---------------5G ue的主要可执行文件 nr-cli---------------5G gNB和UE的cli工具 nr-binder-…

从零开始的软件测试学习之旅(六)测试网络基础知识

测试网络基础知识 HTTP和HTMLURLDNS客户端和服务器请求方法和状态码面试高频Fiddler抓包工具教学弱网 HTTP和HTML 概念 html: HyperText Markup Language 超文本标记语言 http: HyperText Transfer Protocol 超文本传输协议 超文本: 图片, 音频, 视频 关系:http 可以对 html 的…

Cargo - 构建 rust项目、管理依赖包

文章目录 关于 Cargo构建项目创建工程编译运行buildclean 管理依赖添加依赖updatecheck计时 manual rust 安装可参考&#xff1a;https://blog.csdn.net/lovechris00/article/details/124808034 关于 Cargo Cargo 官方文档 &#xff1a; https://doc.rust-lang.org/cargo/crat…