我对 MariaDB 还不太熟悉,尤其是复制方面。不过,今天因为值班,我遇到了一个问题。
看起来我的副本在拍摄mysqldump
副本时落后了。这是正常现象吗?还是下面的备份命令有问题?
mysqldump --defaults-file=$MYCNF -A --events --routines --master-data=2 | gzip -9 -c > ${BKPFILE}
看起来我们在转储完成后正在赶上进度。
我对 MariaDB 还不太熟悉,尤其是复制方面。不过,今天因为值班,我遇到了一个问题。
看起来我的副本在拍摄mysqldump
副本时落后了。这是正常现象吗?还是下面的备份命令有问题?
mysqldump --defaults-file=$MYCNF -A --events --routines --master-data=2 | gzip -9 -c > ${BKPFILE}
看起来我们在转储完成后正在赶上进度。
我用这个脚本创建了一个数据库、角色和模式:
-- -----------------------------------------------------------------------------
-- set variables ---------------------------------------------------------------
-- -----------------------------------------------------------------------------
\set dbname keycloak
\set schemaname :dbname
\set rolename :dbname
-- -----------------------------------------------------------------------------
-- create ROLE and Database ----------------------------------------------------
-- -----------------------------------------------------------------------------
CREATE ROLE :rolename WITH LOGIN ;
CREATE DATABASE :dbname WITH OWNER :rolename ;
-- -----------------------------------------------------------------------------
-- connect to DB, create SCHEMA & set privileges -------------------------------
-- -----------------------------------------------------------------------------
\c :dbname
REVOKE ALL ON SCHEMA public FROM PUBLIC ;
CREATE SCHEMA :schemaname AUTHORIZATION :rolename ;
ALTER ROLE :rolename SET search_path=:schemaname ;
GRANT ALL ON ALL TABLES IN SCHEMA :schemaname TO :rolename ;
REVOKE ALL ON DATABASE :dbname FROM PUBLIC ;
这一切似乎都适用于keycloak
ROLE 可以在keycloak
数据库上执行的操作。
现在我想将 SELECT 授予keycloak_reader
该 SCHEMA keycloak 内所有表上的角色。此外,该角色应该授予其他角色(应该继承那些 SELECT 能力 [理想情况下包括 search_path])。
我试过
GRANT CONNECT ON DATABASE keycloak TO keycloak_reader ;
\c keycloak
GRANT SELECT ON ALL TABLES IN SCHEMA keycloak TO keycloak_reader ;
ALTER ROLE keycloak SET search_path=keyckloak ;
我可以连接,但无法选择任何内容(权限被拒绝)。既不作为keycloak_reader
,也不作为组成员的任何角色keycloak_reader
。
我究竟做错了什么?
由于只有很少的 MariaDB 经验,我需要检查大规模 MariaDB 安装上的字符编码设置。我想通过 Ansible 执行此操作,并且相信发出某种返回编码设置的 SQL 命令(对应于 .default-character-set
中的设置my.cnf
。理想情况下来自 bash。
对于postgres,即我做psql -tAc "SHOW server_encoding;"
*并将结果注册到一个变量中。
所以,实际上我在寻找两件事:
在一边......我猜可能不同的数据库有不同的编码,对吧?对于我当前的任务,检测安装的默认设置就足够了。
我想将整个内容从一列复制到另一列(相同的数据类型),并认为子选择是等式的一部分。
UPDATE tab01
SET column2=(SELECT column1 FROM tab01);
ERROR: more than one row returned by a subquery used as an expression
该错误完全有意义,因为我的子选择的输出有很多行。
有没有一种方法可以将所有值复制到另一个列中,而无需围绕诸如...之类的东西创建任何循环
UPDATE tab01
SET column2=(SELECT column1 FROM tab01 WHERE id=1)
WHERE ID=1;
我试图通过 Ansible 从github 的源代码中找出Barman-2.13 安装,作为 barman 用户(这也是barman 用户的)。我使用酒保手册作为指导。/opt/barman
home
我面临的挑战是我在目标(rhel8 VM)上没有root权限,同样不能使用文件/etc/barman
的默认位置barman.conf
。
你会怎么做?或者,换句话说,将 barman.conf 放在哪里并让酒保知道?我想知道我是否必须为此调整 setup.py ?