在对我的一个问题发表评论之后,我在想是否更好地使用带有X架构的1个数据库,反之亦然.
我的情况:我正在开发一个网络应用程序,当人们注册时,我创建(实际上)数据库(不,它不是社交网络:每个人都必须能够访问自己的数据,永远不会看到其他用户的数据).
这就是我用于我的应用程序的先前版本(仍然在mysql上运行)的方式:通过plesk api,对于每次注册,我这样做:
现在,我需要对postgresql做同样的事情(项目越来越成熟,mysql ......不能满足所有需求)
我需要使所有数据库/模式备份独立:pg_dump在两种方式下都能很好地工作,对于可以配置为仅访问1个模式或1个数据库的用户来说是相同的.
所以,假设你是比我更有经验的potgres用户,你认为对我的情况最好的解决方案是什么,为什么?
使用$ x db而不是$ x schemas会有性能差异吗?什么解决方案将来会更好地维护(可靠性)?
编辑:我差点忘了:我所有的数据库/模式将始终具有相同的结构!
Edit2:对于备份问题(使用pg_dump),使用1 db和多个模式可能更好,一次性转储所有模式:恢复将非常简单地在dev机器中加载主转储然后转储和恢复所需的模式:还有1个额外的步骤,但是倾倒所有架构似乎更快,然后逐个转储它们.
ps:对不起,如果我在文本中忘记了一些'W'字符,我的键盘会受到该按钮的影响;)
那么,应用程序的结构和设计在过去的两年中发生了很大变化.我仍在使用这种one db with many schemas
方法,但是,我的应用程序的每个版本都有1个数据库:
Db myapp_01
\_ my_customer_foo_schema
\_ my_customer_bar_schema
Db myapp_02
\_ my_customer_foo_schema
\_ my_customer_bar_schema
Run Code Online (Sandbox Code Playgroud)
对于备份,我定期转储每个数据库,然后在开发服务器上移动备份.
我也使用PITR/WAL备份,但正如我之前所说,它不太可能我必须立即恢复所有数据库 ..所以它可能会被解雇今年(在我的情况下不是最好的方法).
从现在开始,1-db-many-schema方法对我来说非常有效,即使应用程序结构完全改变了:
我差点忘了:我所有的数据库/模式将始终具有相同的结构!
...现在,每个模式都有自己的结构,可以改变对用户数据流的反应.
我正在尝试第一次创建一个Postgres数据库,所以这可能是一个愚蠢的问题.我为必须从我的php脚本访问数据库的db角色分配了基本的只读权限,我有一个好奇心:如果我执行
GRANT some_or_all_privileges ON ALL TABLES IN SCHEMA schema TO role;
Run Code Online (Sandbox Code Playgroud)
是否还需要执行
GRANT USAGE ON SCHEMA schema TO role;
Run Code Online (Sandbox Code Playgroud)
?
来自文档:
用法:对于模式,允许访问指定模式中包含的对象(假设还满足对象自己的权限要求).从本质上讲,这允许被授权者在模式中"查找"对象.
我认为如果我可以选择或操作模式中包含的任何数据,我可以访问模式本身的任何对象.我错了吗?如果没有,GRANT USAGE ON SCHEMA
用于什么?文档的含义与"假设对象的特权要求也得到满足"完全相同"?
当我尝试使用DBI连接时出现以下错误
DBI connect('database=chaosLRdb;host=192.168.0.1;port=5433','postgres',...) failed: FATAL: no pg_hba.conf entry for host "192.168.0.1", user "postgres", database "chaosLRdb", SSL off
这是我的pg_hba.conf文件:
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
host all postgres 127.0.0.1/32 trust
host all postgres 192.168.0.1/32 trust
host all all 192.168.0.1/32 trust
host all all 192.168.0.1/128 trust
host all all 192.168.0.1/32 md5
host chaosLRdb postgres 192.168.0.1/32 md5
local …
Run Code Online (Sandbox Code Playgroud) 在MSSQL中,为了能够截断表,我需要什么权限来授予用户权限?
我正在尝试授予最小的权限集,但我不能使用DELETE,因为表非常大,我希望操作很快.
以下问题适用于MySQL 5.1.44
假设我有一个表,其中包含由我的应用程序的不同用户插入的记录.如何授予特定用户访问权限,仅查看该表中的记录?我已经考虑VIEW
用他/她的记录创建一个,但我不知道如何创建一个只能看到它的mysql用户VIEW
.
那么,是否有可能创建一个只能访问单个用户的mysql用户VIEW
?这个用户也可以这样做,以便他们只读访问权限VIEW
吗?
谢谢!
PS:在我的例子中,我称之为用户的是真正的附属办事处,他们希望使用自己的应用程序访问他们的记录.
我正在尝试在SQL Server中运行此命令:
disable trigger all on MYDB
Run Code Online (Sandbox Code Playgroud)
这对我来说是失败的.我登录的帐户可以访问MYDB,我几乎可以获得每个可用的权限(它只是本地数据库和我的帐户,所以这没关系).我不明白为什么它告诉我它找不到MYDB呢?我之前做过这个.另请注意:我可以从数据库中进行选择,更新并运行grant语句(例如授予proc的执行权限).我也可以手动禁用触发器...
那为什么会失败?我之前能做到......
谢谢.
这个问题来自好奇心.我搜索谷歌这个但没有得到线索.
假设用户具有对MySQL数据库的完全读/写访问权限.我想知道,是否有任何方式(连接字符串中的某些参数)以只读模式通过相同的用户名和密码连接到数据库?
我想要这样做 而不更改此用户的权限,因为同一用户在其他时间也可能需要写入权限.这将有助于(如果可能)防止意外修改数据库.
来自PostgreSQL文档:
角色的概念包含"用户"和"组"的概念.在8.1之前的PostgreSQL版本中,用户和组是不同类型的实体,但现在只有角色.任何角色都可以充当用户,组或两者.
为什么他们在8.1中做出这个改变?
从C编码器的角度来看,使用单个Role类(struct)可能更容易?
更多细节:
CREATE USER is equivalent to CREATE ROLE except that CREATE USER
为用户/角色提供LOGIN权限.
(我即将为我的webapp设计一个权限系统,因此我对此感兴趣.)
我想为所有数据库中的所有表创建一个只具有select权限的用户.我以为我可以获取数据库列表并为每个数据库应用以下命令:
GRANT select ON DATABASE dbname to user1;
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
ERROR: invalid privilege type SELECT for database
Run Code Online (Sandbox Code Playgroud)
当我用谷歌搜索时,人们建议grant select
对所有桌子进行操作.但总是会添加新表.所以这对我来说不是一个可接受的解决方案.有谁知道任何变通方法?
我使用表前缀方法让几个客户端使用相同的数据库.每个客户端创建的表数量约为55.而不是通过手动列出表格来完成所有授权,我可以执行以下操作吗?
GRANT SELECT,INSERT,UPDATE,DELETE ON database.prefix_* TO 'username'@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud) postgresql ×5
database ×3
grant ×3
mysql ×3
permissions ×3
sql-server ×2
perl ×1
roles ×1
schema ×1
security ×1
view ×1