在 PostgreSQL 中创建用户并分配权限可能看起来很复杂,但一旦了解了基础知识,就会非常简单。PostgreSQL 是一个强大的数据库管理系统,用于有效地处理数据。为了允许不同的人或应用程序访问数据库,您需要创建用户并赋予他们特定的权限。此过程确保只有授权用户才能查看或修改数据,从而保持数据的安全性和良好的管理。
Step 1: Connect to PostgreSQL
第一步,连接到 PostgreSQL 服务器。
sudo -i -u postgres psql
Step 2: Creating a User
用户就像一个可以访问数据库的人,运行以下命令创建用户:
CREATE USER new_user WITH PASSWORD 'password';
将 new_user 和 password 替换为实际的用户名和密码。
Step 3: Creating a Database
数据库是存储数据的地方,运行如下命令创建数据库:
CREATE DATABASE my_database;
将 my_database 替换为实际的数据库名称。
Step 4: Assigning Permissions
权限就像决定用户对数据库做操作的规则,您可以选择将指定数据库上的所有权限分配给用户,也可以选择对特定表进行有限的访问。
Grant Full Access on Database
通常,我们提供对数据库的完全访问以平稳运行任何应用程序。在开发和暂存环境中,最好允许完全特权。
使用下面的语句允许 new_user 对 my_database 的完全访问。
GRANT ALL ON DATABASE my_database TO new_user;
Allow Database Connection
接下来,您需要授予新用户连接到特定数据库的权限。假设您有一个名为 my database 的数据库,使用 GRANT 命令授权 new_user 访问 my_database 数据库。
GRANT CONNECT ON DATABASE my_database TO new_user;
这将不允许用户访问表数据。为了允许访问数据,您需要允许特定于表的权限。
Granting Table Permissions
在授予对数据库的访问权限之后,您可能希望向用户授予对数据库中特定表的权限。
(1) 允许 new_user 从名为 my_table 的表中读取数据
GRANT SELECT ON my_table TO new_user;
(2) 允许 new_user 从名为 my_table 的表中插入数据
GRANT INSERT ON my_table TO new_user;
(3) 允许 new_user 从名为 my_table 的表中更新数据
GRANT UPDATE ON my_table TO new_user;
(4) 允许 new_user 从名为 my_table 的表中删除数据
GRANT DELETE ON my_table TO new_user;
Granting All Permissions
将表上的所有权限 (SELECT、INSERT、UPDATE、DELETE) 授予用户,使用以下命令
GRANT ALL PRIVILEGES ON my_table TO new_user;
Step 5: Revoking Permissions
可以使用 REVOKE 命令撤销某个用户权限。例如,要删除 new_user 对 my_table 表的 INSERT 权限。
REVOKE INSERT ON my_table FROM new_user;
Step 6: Deleting a User
可以使用 DROP USER 命令删除一个用户。例如,删除 new_user 用户。
DROP USER new_user;