MySQL 创建只读用户
用户可能经常需要使用只读凭证创建对数据库的访问。 用户只能查看或读取保存在数据库中的数据; 他们不得更改其内容或设置方式。
本文主要讨论如何在MySQL中创建只读用户。 您需要创建一个只能以只读模式访问数据库的用户。
在 MySQL 中创建一个只读用户
要在 MySQL 中创建只读用户,请在终端或命令提示符下使用以下命令以 MySQL 管理员身份登录。
mysql -u root -p
将出现密码输入提示。 然后输入root账户的密码。
输出:
创建一个新的 MySQL 用户帐户
CREATE USER 'report'@'%' IDENTIFIED BY 'secret';
用户 report 可以使用上述命令中的 %
,如图所示,从任何主机加入。 您可以在指定用户可以连接的主机后限制访问。
如果省略此信息,用户将只能从同一台机器加入。
输出:
授予用户访问 SELECT 命令的权限
GRANT SELECT ON database_name.* TO 'report'@'%';
您必须同时拥有您授予的这些权限和 GRANT OPTION
权限才能使用 GRANT。 (或者,如果您拥有 MySQL 系统模式授权表的更新权限,则可以授予任何帐户任何权限)。
使用此命令,用户仅被授予对本地主机上数据库的只读访问权限。 如果您知道将安装收集器的主机的主机名或 IP 地址,请键入以下命令。
输出:
GRANT SELECT ON database_name.* TO 'report'@'host_name or IP_address';
要保存并应用权限调整,请运行以下命令。
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'report'@'host_name or IP_address';
最后输入quite,显示用户授权权限确认。
由于 MySQL 8 与之前的版本不同,我们必须按照说明进行操作。 但是您必须按顺序分两个阶段进行:
CREATE USER 'readonly_user'@'localhost' IDENTIFIED BY 'some_strong_password';
GRANT SELECT, SHOW VIEW ON *.* TO 'readonly_user'@'localhost';
FLUSH PRIVILEGES;
MySQL 开发人员需要额外的功能,而 MySQL 8.0 提供了 SQL、JSON、正则表达式和 GIS 领域的许多功能。
UTF8MB4 在 8.0 版本中已经被用作默认字符集,因为开发者也希望能够存储 Emojis。
最后,还有对数据类型的增强,包括增强的 IPv6 和 UUID 功能以及对 BINARY 数据类型的按位操作。
输出:
以下是进一步的只读权限。
只读权限 | 说明 |
---|---|
SHOW VIEW | 允许他们显示视图模式。 |
SHOW DATABASES | 允许他们显示数据库。 |
REPLICATION CLIENT | 允许他们检查复制/从属状态。 但是他们需要允许所有数据库。 |
PROCESS | 允许他们检查正在运行的进程。 它仅适用于所有数据库。 |
以下是您可以授予用户的几种权限。
权限 | 说明 |
---|---|
ALL | 这将允许 MySQL 用户进行所有访问。 |
ALL PRIVILEGES | MySQL 用户将拥有完全访问权限。 |
CREATE | 使他们能够开发新的数据库或表。 |
DROP | 使他们能够删除数据库或表。 |
DELETE | 使他们能够从表中删除行。 |
INSERT | 使他们能够将行插入表中。 |
SELECT | 使他们能够使用 SELECT 命令读取数据库。 |
SHOW VIEW | 使他们能够显示视图架构。 |
REPLICATION CLIENT | 使他们能够检查复制/从属状态,但他们需要允许所有数据库。 |
PROCESS | 使他们能够检查正在运行的进程。 它仅适用于所有数据库。 |
UPDATE | 使它们能够更新表行。 |
GRANT OPTION | 使他们能够授予或删除其他用户权限。 |
使用以下框架为特定用户提供权限:
GRANT [type of permission list separated by a comma] ON [database name].[table name] TO ‘[username]’@'[hostname]’;
总结
在整篇文章中,我们讨论了在 MySQL 中创建只读用户。 使用它,用户只能出于只读目的访问数据库,并且只能从本地主机访问它。
密码始终标识只读用户。 如前所述,我们可以在MySQL命令行中使用几个命令来创建一个用户来访问数据库中的只读数据。
相关文章
使用 Mysqldump 备份 MySQL 中的数据
发布时间:2023/05/09 浏览次数:192 分类:MySQL
-
本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。
更新 MySQL 表中的主键
发布时间:2023/05/09 浏览次数:61 分类:MySQL
-
本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。
在 MySQL 中获取命令历史记录
发布时间:2023/05/09 浏览次数:150 分类:MySQL
-
本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史
Oracle 的 decode 函数在 MySQL 中的等价物
发布时间:2023/05/09 浏览次数:115 分类:MySQL
-
本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。
使用 Ubuntu 连接远程 MySQL 服务器的不同方法
发布时间:2023/05/09 浏览次数:97 分类:MySQL
-
在本文中我们将学习如何使用 Ubuntu 连接远程 MySQL 服务器来操作数据以及启动和停止 MySQL 服务器。
在 Linux 中安装 MySQL 客户端
发布时间:2023/05/09 浏览次数:72 分类:MySQL
-
在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。
在 MySQL 中转换为十进制
发布时间:2023/05/09 浏览次数:150 分类:MySQL
-
有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。
在 MySQL 中获取当前日期和时间
发布时间:2023/05/09 浏览次数:145 分类:MySQL
-
本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间
更改 MySQL 服务器中的 max_allowed_packet Size
发布时间:2023/05/09 浏览次数:142 分类:MySQL
-
本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。