服务器权限系统是如何工作的?
更新于
可应用操作系统: Windows、macOS、Linux
可应用 Navicat 产品:Navicat for MySQL、Navicat for PostgreSQL、Navicat for MariaDB、Navicat Premium
可应用 Navicat 版本编号:全部
MySQL & MariaDB
有关用户权限的信息是保存在 mysql 数据库(即在名为 mysql 的数据库)中的 user、db、host、tables_priv 和 columns_priv 表內。当 MySQL 服务器启动时,它会读取这些表的内容。
MySQL 访问控制将包括两个階段:
- 服务器检查你的桌面(主机地址或 IP 地址)是否允许连接。
- 假设你可以连接,服务器会检查你的每个请求,看你是否有足够的权限运行它。例如: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 访问控制将包括两个階段:
- 服务器检查你的桌面(主机地址或 IP 地址)是否允许连接。
- 假设你可以连接,服务器会检查你的每个请求,看你是否有足够的权限运行它。例如:Create table 权限、Drop table 权限或 Alter table 权限。
-
合作伙伴