2.6. 允许只读访问 History 数据库
要允许在不允许编辑的情况下访问历史记录数据库,您必须创建一个只读 PostgreSQL 用户,该用户可登录并从
ovirt_engine_history
数据库读取。这个过程必须在安装历史记录数据库的系统中执行。
过程 2.1. 允许只读访问 History 数据库
- 创建用户以对历史记录数据库具有只读访问权限:
psql -U postgres -c "CREATE ROLE [user name] WITH LOGIN ENCRYPTED PASSWORD '[password]';" -d ovirt_engine_history
# psql -U postgres -c "CREATE ROLE [user name] WITH LOGIN ENCRYPTED PASSWORD '[password]';" -d ovirt_engine_history
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 授予新创建的用户权限以连接到历史记录数据库:
psql -U postgres -c "GRANT CONNECT ON DATABASE ovirt_engine_history TO [user name];"
# psql -U postgres -c "GRANT CONNECT ON DATABASE ovirt_engine_history TO [user name];"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 授予新创建的用户使用
public
模式:psql -U postgres -c "GRANT USAGE ON SCHEMA public TO [user name];" ovirt_engine_history
# psql -U postgres -c "GRANT USAGE ON SCHEMA public TO [user name];" ovirt_engine_history
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 生成授予新建用户的剩余权限,并将其保存到文件中:
psql -U postgres -c "SELECT 'GRANT SELECT ON ' || relname || ' TO [user name];' FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace WHERE nspname = 'public' AND relkind IN ('r', 'v');" --pset=tuples_only=on ovirt_engine_history > grant.sql
# psql -U postgres -c "SELECT 'GRANT SELECT ON ' || relname || ' TO [user name];' FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace WHERE nspname = 'public' AND relkind IN ('r', 'v');" --pset=tuples_only=on ovirt_engine_history > grant.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用您在上一步中创建的文件为新创建的用户授予权限:
psql -U postgres -f grant.sql ovirt_engine_history
# psql -U postgres -f grant.sql ovirt_engine_history
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 删除您用来为新创建的用户授予权限的文件:
rm grant.sql
# rm grant.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 为新创建的用户将以下行添加到
/var/lib/pgsql/data/pg_hba.conf
文件中:TYPE DATABASE USER ADDRESS METHOD
# TYPE DATABASE USER ADDRESS METHOD host ovirt_engine_history [user name] 0.0.0.0/0 md5 host ovirt_engine_history [user name] ::0/0 md5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重新载入 PostgreSQL 服务:
systemctl reload postgresql
# systemctl reload postgresql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您可以测试只读用户的访问权限:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 要退出
ovirt_engine_history
数据库,请输入\q
。
对于
ovirt_engine_history
数据库中的表格和视图,只读用户的 SELECT
语句会成功,而修改会失败。