如何在 MySQL 中创建新用户并授予权限

2023-11-16

MySQL是一个关系数据库管理系统,用于以表和记录的形式存储数据。您可以使用 SQL 语句或编程语言插入、修改或检索数据。它允许我们创建新用户并授予对数据库表的权限。最好的做法是始终对所有数据库使用单独的用户。这将确保应用程序无法访问其他应用程序的数据库。

本教程的目的是在MySQL服务器中创建一个新用户并授予数据库权限。本教程包括创建用户以及授予对特定数据库的所有表或所有数据库的所有表的权限的说明。

在我们开始之前

您必须拥有一个正在运行且具有管理权限帐户访问权限的 MySQL 服务器。使用超级用户或 root 帐户访问权限登录 MySQL 服务器。这将允许您创建新用户并授予数据库权限。

首先,连接到MySQL服务器以执行进一步的指令。

1.在MySQL中创建一个新用户

使用具有 shell 访问权限的 root 用户登录 MySQL 服务器,并创建一个名为“rahul”的新用户。以下语句仅允许用户 rahul 从本地主机访问 MySQL 服务器。

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

现在将权限分配给特定数据库。以下命令将允许用户 rahul 对数据库“mydb”的所有权限。

GRANT ALL ON mydb.* TO 'rahul'@'localhost'; 

要授予所有数据库的所有权限,请使用以下查询:

GRANT ALL ON *.* TO 'rahul'@'localhost'; 

创建或进行任何更改后,请确保使用以下 SQL 查询重新加载权限。

FLUSH PRIVILEGES; 
  • 如何重置 MySQL root 用户密码

2.创建具有远程访问权限的MySQL用户

允许任何用户从远程系统连接到 MySQL 服务器。您需要指定远程系统的主机名或IP地址。您还可以使用“%”作为通配符。

  • 例如,创建一个只能从特定IP访问的MySQL用户(例如:192.168.1.10)
    CREATE USER 'rahul'@'192.168.1.10' IDENTIFIED BY 'password'; 
    
  • 为某个网络范围创建 MySQL 用户(例如:192.168.1.0/24)
    CREATE USER 'rahul'@'192.168.1.0/24' IDENTIFIED BY 'password'; 
    
  • 您还可以创建可从任何主机访问的 MySQL 用户帐户。在这种情况下,请使用“%”作为通配符。
    CREATE USER 'rahul'@'%' IDENTIFIED BY 'password'; 
    

3. 给特定用户授予权限

请在下面找到 MySQL 用户中常用权限的列表。访问here获取 MySQL 用户权限的完整列表。

  • 所有[特权] –授予用户所有权限。
  • CREATE –授予用户创建新数据库和表的权限。
  • DROP –授予用户删除(删除)数据库和表的权限。
  • DELETE –授予用户从表中删除行的权限。
  • ALTER –授予用户修改表结构的权限。
  • INSERT –授予用户向表中插入(添加)行。
  • SELECT –授予用户运行 select 命令以从表中读取数据。
  • UPDATE –授予用户更新表中数据的权限。
  • 执行 -授予用户执行存储例程的权限。
  • FILE –授予用户访问服务器主机上的文件的权限。
  • 授予选择权 –授予用户授予或删除其他用户的权限。

在这里,您可以指定用逗号分隔的权限来代替 ALL。例如,允许对数据库 mydb 上的“rahul”@“localhost”进行 CREATE、DELETE、INSERT 和 UPDATE 访问。

GRANT CREATE,DELETE,INSERT,UPDATE ON mydb.* TO 'rahul'@'localhost'; 
FLUSH PRIVILEGES; 

4. 撤销MySQL中的用户权限

使用 REVOKE 语句删除用户的任何特定权限。例如,删除 mydb 数据库上用户“rahul”@“localhost”的 DELETE 权限。

  • 要从数据库中删除特定权限,请使用如下查询:
    REVOKE DELETE ON mydb.* TO 'rahul'@'localhost'; 
    
  • 要删除用户对数据库的所有权限,请使用如下查询:
    REVOKE ALL ON mydb.* TO 'rahul'@'localhost'; 
    
  • 您甚至可以撤销特定用户对所有数据库的权限。
    REVOKE ALL ON *.* TO 'rahul'@'localhost'; 
    

撤销权限后,必须运行同花顺特权;查询以应用更改。

5. 在MySQL中删除用户

使用 MySQL DROP 语句从服务器中删除现有用户。例如,要删除用户“rahul”@“localhost”,请执行以下查询:

DROP USER 'rahul'@'localhost'; 
FLUSH PRIVILEGES; 

结论

在本教程中,您学习了创建新用户并向 MySQL 服务器授予权限。还提供了更改或撤销任何 MySQL 用户权限的说明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 MySQL 中创建新用户并授予权限 的相关文章

  • 通过“SELECT”命令选择每组的前两条记录的最佳方法是什么?

    例如我有下表 id group data 1 1 aaa 2 1 aaa 3 2 aaa 4 2 aaa 5 2 aaa 6 3 aaa 7 3 aaa 8 3 aaa 通过 SELECT 命令选择每组的前两条记录的最佳方法是什么 如果没有
  • 创建用于存储高尔夫球成绩的可扩展数据库架构

    我正在尝试设计一个数据库来存储我所有的朋友和我的高尔夫球成绩 您可能知道 高尔夫得分由 18 洞的个人得分组成 我可以想到两种设计模式的方法 创建一个表 每个洞有一列 例如 h1 到 h18 该表具有引用其他表的 FK player id
  • SQL日期格式转换? [dd.mm.yy 至 YYYY-MM-DD]

    是否有 mySQL 函数可以将日期从 dd mm yy 格式转换为 YYYY MM DD 例如 03 09 13 gt 2013 09 03 由于您的输入是表单中的字符串03 09 13 我假设 因为今天是 2013 年 9 月 3 日 d
  • html 下钻下拉所选值未插入 MYSQL

    我有两个下拉列表 首先从数据库下拉填充 根据第一个下拉列表的选定值从数据库填充第二个下拉列表 document ready function c change function var c1 c selected text if c1 aj
  • MySQL REPLACE 在自动递增行中

    假设我有一个 MySQL 表 其中包含三列 id a and b和名为id is an AUTO INCREMENT场地 如果我将如下查询传递给 MySQL 它将正常工作 REPLACE INTO table id a b VALUES 1
  • 用Java将图像添加到数据库

    我正在尝试将图像添加到 mysql 数据库中的 BLOB 字段 图像大小将小于 100kb 但是我遇到了问题 想知道将这些数据添加到数据库的更好方法是什么 com mysql jdbc MysqlDataTruncation 数据截断 第
  • 如何在pandas中将字符串转换为没有日期的日期时间

    例如issue d数据框中的列是字符串 df issue d Dec 2012 我想将字符串转换为日期时间类型而不是字符串类型 2012 12 怎么做 I use datetime strptime x b Y for x in df is
  • InnoDB 或 MyISAM - 为什么不两者都使用呢?

    我读过各种关于两者之间哪个更好的主题InnoDB and MyISAM 看来争论的都是使用还是其他 根据表的不同 是否不能同时使用两者 这样做会有什么缺点 据我所知 发动机可以在CREATE TABLE命令 因此 某些经常读取的表可以设置为
  • SQL DML:日期值不正确 (MySQL)

    我在数据库中创建了一个表 CREATE TABLE official receipt student no INT UNSIGNED academic year CHAR 8 trimester ENUM 1 2 3 or no MEDIU
  • 如何在 MySql Workbench 中禁用 INVISIBLE 索引选项?

    我刚刚安装了MySqlWorkbench我发现了实施INVISIBLE index所描述的here https dev mysql com doc refman 8 0 en invisible indexes html 我想禁用此功能 因
  • 为通用字符选择表排序规则

    我正在开发一个需要存储通用字符的后端 我选择了utf8mb4用于此目的的表编码 我还必须选择表格排序规则 最直接的选择是选择utf8mb4 general ci表整理 除了一般的排序规则之外 还有大约20种其他排序规则可供选择 更具体的排序
  • 在 MySQL 表中存储用户密码的最佳 PHP 哈希方法?

    我已经阅读 Stack Overflow 问题大约 15 分钟了 每一个问题似乎都与我之前读到的问题相矛盾 Bcrypt SHA1 MD5 等 我目前对我的密码进行 MD5 但我想让我的数据库在发生泄露时更加安全 我知道这个问题已经被问了一
  • MySQL-分割字符串

    我的问题与这篇文章类似 MySQL 中的 反向 GROUP CONCAT https stackoverflow com questions 17308669 reverse group concat in mysql 然而 而不是反转gr
  • 我可以让 MySQL 数据库在插入语句后自动为列分配值吗?

    给定一个具有 ID pk 和 name 列的员工表 ID name 1 John 2 James 3 Tom Can I do INSERT INTO employee name VALUES Jack 并以某种方式让数据库自动分配下一个可
  • 如何通过单个mysql查询更新多个表?

    我有两个表 tb1 和 tb2 我必须在用户级别更新两个表的公共列 我对两个表都有一个共同的标准 例如用户名 所以我想这样更新 UPDATE tb1 tb2 SET user level 1 WHERE username Mr X 但不知何
  • PHP 中的 SQL 语句与 phpmyadmin 中的 SQL 语句的行为不同

    I have form store sql INSERT INTO myodyssey myaccount id email username password VALUES NULL email unixmiah formtest woo
  • MySQL ALTER TABLE 挂起

    我知道这个问题已经被问过好几次了 但我的问题发生在我刚刚创建的表上 它只有 10 列和 1 行 因此 与通常的挂起问题不同 这不是具有大量数据的大表的情况 但它仍然挂着 这是我正在运行的 SQL ALTER TABLE db Search
  • 使用 PHP 和 jSON 从 MySQL 获取 UIImage

    我正在开发一个小型新闻阅读器 它通过对 URL 执行 POST 请求来从网站检索信息 响应是一个带有未读新闻的 JSON 对象 例如 应用程序上的最新新闻的时间戳为 2013 03 01 当用户刷新表时 它会发布 domain com ap
  • 当我耗尽 bigint 生成的密钥时会发生什么?怎么处理呢?

    我自己无法想象一个好的答案 所以我想在这里问 在我心里 我总是想知道 如果AUTO INCREMENT PRIMARY ID我的专栏MySQL表用完了吗 举例来说 我有一个有两列的表 一个ID auto increment primary
  • Mysql案例不工作

    SELECT SQL CALC FOUND ROWS a zn name AS zone name c name AS carrier name CASE type WHEN type 1 THEN General day ELSE Spe

随机推荐

  • IDEA(2023)解决运行乱码问题

    作者介绍 一个有梦想 有理想 有目标的 且渴望能够学有所成的追梦人 学习格言 不读书的人 思想就会停止 狄德罗 个人主页 进入博主主页 专栏系列 无 欢迎小伙伴们访问到博主的文章内容 在浏览阅读过程发现需要纠正的地方 烦请指出 愿能与诸君一
  • 如何增加 Tomcat 上传文件大小限制

    今天在部署一个war文件 开发站点代码 时Tomcat 8 我遇到了以下有关 Apache Tomcat 服务器中上传限制大小的问题 所以我决定将 Tomcat 上传文件大小限制增加到高于默认值 默认上传限制设置为 50 MB Caused
  • Node.js 与 MySQL 示例

    Node js 是一种流行的 Web 应用程序编程语言 如 PHP 和 JAVA 此外 MySQL 是用于存储值的最流行的数据库 Node js 的 MySQL 数据库驱动程序可在 NPM 存储库下找到 在本教程中 您将学习如何使用 Nod
  • 如何在 Ubuntu 18.04 上安装 GIMP 2.10

    GIMP GNU 图像处理程序 是一个免费分发的用于处理图像的软件 我们可以轻松地优化图像 使用 GIMP 转换其类型 它为设计师提供了将图像转化为真正独特的创作的能力和灵活性 GIMP 是一个跨平台应用程序 可用于 Linux Windo
  • 如何在 EC2 实例上创建交换分区

    在 Amazon Elastic Compute Cloud EC2 实例上创建交换分区有助于提高系统的性能和稳定性 交换分区是硬盘驱动器上的一个空间 当物理内存 RAM 不足时 操作系统可以将其用作虚拟内存 在本文中 我们将解释如何在 E
  • 如何在 Ubuntu 20.04 上安装和配置 Ansible

    Ansible 是一种自动化工具 用于从单台计算机管理多个远程主机 它为您提供了针对大量远程主机的轻松配置 例如 您在多台机器上执行相同的任务 Ansible 为您提供了自动执行这些任务的选项 Ansible 是 Chef 和 Puppet
  • 如何在 Bash Shell 中使用换行符 ( \n )

    问题 如何将换行打印为 n在 bash shell 中 如何使用 n在 shell 脚本中打印新行 Issues 在 bash shell 中回显换行符打印文字 n但不是新线 打印文字 n 在 bash 脚本中的嵌套打印新行中 Comman
  • 如何在 CentOS/RHEL 和 Fedora 上设置 VNC 服务器(Linux 远程桌面访问)

    VNC 虚拟网络计算 服务器支持 Linux 系统的远程桌面访问 类似于MSTSC在窗户中 一般来说Linux管理员不喜欢使用Windows访问 但有时我们需要访问Linux的远程桌面 在这种情况下 我们需要在 Linux 系统上安装 vn
  • 如何在 FirewallD 中打开特定端口

    防火墙是大多数现代 Linux 发行版使用的防火墙管理解决方案 在本教程中 您将学习如何在firewalld 中打开端口 本教程介绍如何在firewalld 中为公共 特定IP 或IP 范围打开端口 找到我们的上一篇文章关于Firewall
  • 在 Windows 上安装 Python 3.x 的综合指南

    Python 是一种广泛使用的通用编程语言 以其简单性 可读性和广泛的应用范围而闻名 无论您是开发 Web 应用程序 执行数据分析还是自动化任务 Python 都是一个绝佳的选择 截至 2023 年 7 月更新本文时 最新的 Python
  • 如何在一个 Cron 作业中运行多个命令

    Crontab 是一个用于在 Unix Linux 系统上定期运行计划任务的实用程序 它允许我们安排多个 cron 作业同时运行 我们可以安排任何 shell 命令或脚本在终端上执行 crontab 中的每个计划作业均由换行符分隔 我们还可
  • Linux 中的 tee 命令及示例

    tee 是 Linux 中的一项命令 它从标准输入读取并将输出写入标准输出和一个或多个文件 从而有效地复制输入 它通常用在 shell 脚本中 将命令输出发送到文件和控制台 Linux 中的 Tee 命令主要与其他命令结合使用 它读取输入并
  • 如何在 Debian 10/9 上安装 Mono

    Mono 项目由微软赞助 它是 Microsoft NET Framework 的开源跨平台实现 Mono 支持大多数具有 32 位和 64 位架构的现代操作系统 本教程帮助您逐步在 Debian 10 和 Debian 9 系统上安装 M
  • 如何在 Ubuntu 18.04 和 16.04 上设置 Squid 代理服务器

    Squid 是类 Unix 操作系统中最流行的代理服务器 它还用于网页过滤 Squid 还可用作 HTTP HTTPS 和 FTP 协议的缓存代理服务器 本文将帮助您在 Ubuntu 18 10 18 04 LTS 16 04 LTS 和
  • 如何在 Linux 中删除超过 30 天的文件

    定期从服务器中清除旧的未使用文件是最佳实践 例如 如果我们每天 每小时在服务器上运行文件或数据库备份 那么服务器上将会产生很多垃圾 所以要定期清洁 为此 您可以从备份目录中找到旧文件并清理它们 本文向您介绍如何查找和删除超过 30 天的文件
  • 如何使用 Google Chrome 无头功能

    Google Chrome 最新版本发布 新增实用功能无头镀铬 无头 Chrome 对于浏览器自动化很有用 您可以使用命令行和编程语言捕获任何网页的屏幕截图 而无需启动 Chrome GUI 它还支持打印网页DOM并创建网页的pdf 本教程
  • Laravel:从 Apache 中的 URL 中删除“public/index.php”

    当您创建新的 Laravel 项目时 默认配置要求您在 URL 中包含 public index php 以访问您的应用程序 这可能很麻烦 并且会让您的 URL 看起来笨拙且不专业 幸运的是 这个问题有一个简单的解决方案 在本教程中 我们将
  • 如何在 Fedora 上安装 Java 11/8

    Java 是一种流行的应用程序 系统软件和 Web 应用程序编程语言 Oracle Java 8 和 Java 11 需要订阅才能下载和使用 因此 我们使用 OpenJDK 在 Fedora Linux 系统上安装 Java 本教程将帮助您
  • Apt Upgrade 与 Apt Dist-upgrade:主要区别

    The 高级打包工具 APT 是一个强大的包管理系统 用于 Debian Ubuntu 及其衍生版本 它简化了在基于 Linux 的系统上安装 升级和删除软件的过程 在各种APT命令中 易于升级 and apt dist upgrade 在
  • 如何在 MySQL 中创建新用户并授予权限

    MySQL是一个关系数据库管理系统 用于以表和记录的形式存储数据 您可以使用 SQL 语句或编程语言插入 修改或检索数据 它允许我们创建新用户并授予对数据库表的权限 最好的做法是始终对所有数据库使用单独的用户 这将确保应用程序无法访问其他应