服务器权限系统是如何工作的?

可应用操作系统:iOS

可应用 Navicat 产品:Navicat for MySQL、Navicat for PostgreSQL

可应用 Navicat 版本编号:全部



MySQL & MariaDB

有关用户权限的信息是保存在 mysql 数据库(即在名为 mysql 的数据库)中的 user、db、host、tables_priv 和 columns_priv 表內。当 MySQL 服务器启动时,它会读取这些表的内容。

MySQL 访问控制将包括两个階段:

1. 服务器检查你的桌面(主机地址或 IP 地址)是否允许连接。
2. 假设你可以连接,服务器会检查你的每个请求,看你是否有足够的权限运行它。例如:Create table 权限、Drop table 权限或 Alter table 权限。

MySQL 服务器在这两个階段的访问控制使用 Mysql 数据库中的 User、Db 和 Host 表。

服务器是这样使用这五个授予表:

mysql.user 表的字段决定允许或拒绝进来的连接。对于允许的连接,任何在 mysql.user 表授予的权限表示用户的全局(超级用户)权限。这些权限适用于服务器上的所有数据库。

mysql.db 和 mysql.host 表是一起使用的:

mysql.db 表的字段决定哪些用户可以从哪些主机访问哪些数据库。权限字段决定哪些操作是允许的。

当你想一个特定的 mysql.db 表项目适用于几台主机,mysql.host 表是用作 mysql.db 的一个延伸。例如:如果你想要一个用户能够从在网络中的多个主机使用一个数据库,在用户的 mysql.db 表项目中保留 mysql.host 空值,然后为每一个主机在 mysql.host 表上填充。

mysql.tables_priv 和 mysql.columns_priv 表类似 mysql.db 表,但他们适用于表和列的级别而不是数据库级别。



PostgreSQL

有关用户权限的信息是保存在 pg_catalog 模式中的 pg_shadow 表內。当 PostgreSQL 服务器启动时,它会读取这表的内容。

PostgreSQL 访问控制将包括两个階段:

1. 服务器检查你的桌面(主机地址或 IP 地址)是否允许连接。
2. 假设你可以连接,服务器会检查你的每个请求,看你是否有足够的权限运行它。例如:Create table 权限、Drop table 权限或 Alter table 权限。

相关文章

还有其他问题吗?
提交查询