网站搜索

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


MySQL 是一种流行且广泛使用的数据库管理系统,用于存储和组织数据并允许用户检索数据。它附带了大量选项,可授予用户对表和数据库的某些权限。

在本指南中,您将了解如何在 MySQL 数据库中创建新用户并授予权限。

如何在 MySQL 中创建新用户

要创建新用户,请首先登录 MySQL shell。

sudo mysql -u root -p

提供 sudo 密码,然后提供设置 MySQL 数据库时提供的密码,然后按 ENTER。此后,您将收到此提示。

要创建新用户,请使用如下所示的语法:

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

例如,要在数据库中创建名为“howtoing”的新用户,请调用以下命令:

MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

需要牢记的几点

在本地添加用户时,即在安装了 MySQL 的系统上,用户的主机被指定为 localhost,而不是 IP 地址。关键字“localhost”翻译为“这台计算机”,MySQL 会以独特的方式对待它。基本上,mysql 客户端使用 localhost 来建立与本地安装的 MySQL 数据库服务器的连接。

到目前为止,howtoing 用户没有任何与数据库交互的权限。事实上,用户甚至无法访问MySQL shell。

要授予用户对所有数据库(包括表)的完全访问权限,请运行。

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';

上面的命令中,星号分别指向用户可以访问的数据库和表。它授予用户对数据库的所有权限 - 读取写入编辑执行,包括执行所有操作跨其他数据库和表的任务也是如此。

到目前为止,我们已经授予用户对数据库的完全访问权限。虽然这对于解释 MySQL 概念很方便,但通常不建议这样做,因为它可能会给数据库带来安全风险。想象一下如果黑客掌握了用户的密码会发生什么。我们将在下一节中进一步讨论如何分配特定权限。

完成向用户分配权限后,重新加载所有权限(如图所示)以使更改生效。

MariaDB [none]> FLUSH PRIVILEGES

如何授予不同用户权限

以下是您可以授予用户的可能权限的详细信息:

  • 所有权限 – 如前所述,这授予 MySQL 用户对特定数据库的完全访问权限。
  • CREATE – 允许用户创建新的数据库或表。
  • DROP – 允许用户删除数据库或用户。
  • INSERT – 允许用户在表中插入行。
  • DELETE – 允许用户从表中删除行。
  • SELECT – 拥有“SELECT”权限,用户可以读取表的内容。
  • UPDATE – 允许用户更新表中的行。
  • 授予选项 – 用户可以授予或删除其他用户的权限。

要授予特定用户权限,请使用以下语法:

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

此外,您可以使用单个星号为数据库中的所有表分配权限,如下所示:

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

例如,要为数据库 testdb 的所有表上的“howtoing”用户分配 SELECT 权限,请运行该命令。

MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';

然后刷新权限以使更改生效。

MariaDB [none]> FLUSH PRIVILEGES;

此外,您可以通过用逗号分隔来一次性分配多个权限,如下所示。

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';

如何撤销MySQL权限

要撤销用户的权限,请使用以下语法:

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

例如,要撤销用户“howtoing”的INSERT权限,请运行以下命令。

MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES

要查看用户当前的权限,请执行:

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

从下面的输出中,我们可以看到“howtoing”用户的 INSERT 权限已被删除,只剩下 SELECTUPDATE testdb 数据库的权限。

要测试使用新用户登录 MySQL shell,请首先注销。

MariaDB [none]> quit;

然后再次登录。

sudo mysql -u tecmint -p

提供用户密码并按 ENTER 访问 shell。

要删除用户,请使用 DROP 命令,就像删除数据库时一样。

MariaDB [none]> DROP USER 'username'@'localhost';

您可能还想阅读以下 MySQL 相关文章:

  • 解决 MySQL 中常见错误的实用技巧
  • Mytop – 在 Linux 中监控 MySQL/MariaDB 性能的有用工具
  • 如何在 Linux 中更改默认 MySQL/MariaDB 端口
  • 如何在 Linux 中重置 MySQL 或 MariaDB Root 密码
结论

希望现在您可以在 MySQL 数据库服务器中创建用户并轻松地分配或撤销权限。