我实际上在这里使用MariaDB,但我正在借口MariaDB是MySQL的“替代品”。 如果这是一个跨平台的差异/问题,我不会感到惊讶,但我希望你看看。
这就是交易:我正在使用CentrifyDC进行PAM身份validation,并使用Active Directory域。 这对于SSH / sudoer访问非常有效,现在我正试图为MySQL提供authN / Z … err,MariaDB。
用户身份validation似乎很好。 我创build一个用户,并按预期工作:
MariaDB [(none)]> grant all privileges on *.* to myuser identified via pam;
为了完整起见,我将login并查看我的资助金和我是谁:
MariaDB [(none)]> show grants; +---------------------------------------------------------------+ | Grants for myuser@% | +---------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED VIA pam | +---------------------------------------------------------------+ 1 row in set (0.00 sec) MariaDB [(none)]> SELECT USER(), CURRENT_USER(), @@proxy_user; +-----------------+----------------+--------------+ | USER() | CURRENT_USER() | @@proxy_user | +-----------------+----------------+--------------+ | myuser@localhost | myuser@% | NULL | +-----------------+----------------+--------------+ 1 row in set (0.00 sec)
这看起来是对我不太专业的眼睛。
现在我试图在http://dev.mysql.com/doc/refman/5.5/en/pam-authentication-plugin.html上的“6.3.6.2.2.3。Unix密码authentication与代理用户和组映射“。 这可能是我的问题:跟随MariaDB的MySQL文档 – 但我一直没有find一个MariaDB等价物。 这是发生了什么事。
根据文档,我创build了代理用户,组等等。请注意,“myuser”是组“my-domain-group”的成员。
CREATE USER ''@'' IDENTIFIED WITH pam as 'mysql, my-doman-group=admin'; CREATE USER 'admin'@'localhost' IDENTIFIED BY 'really weird password'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost'; GRANT PROXY ON 'admin'@'localhost' to ''@'';
以“myuser”的身份login。 让我们来看看我们的赠款:
MariaDB [(none)]> SHOW GRANTS; +------------------------------------------------------------------------------------------+ | Grants for @ | +------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO ''@'' IDENTIFIED VIA pam USING 'mysql, my-doman-group=admin' | | GRANT PROXY ON 'admin'@'localhost' TO ''@'' | +------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
这是我期望看到的。 现在,根据文档,我们来看看我们代理的是谁:
MariaDB [(none)]> SELECT USER(), CURRENT_USER(), @@proxy_user; +-----------------+----------------+--------------+ | USER() | CURRENT_USER() | @@proxy_user | +-----------------+----------------+--------------+ | myuser@localhost | @ | NULL | +-----------------+----------------+--------------+ 1 row in set (0.00 sec)
因此,我们有它。 “我的用户”帐户没有像“my-domain-group”那样获得访问权限,但它允许访问login。 是什么赋予了? 有什么build议么?
截至这个答案的时候,它声明在引用的mysql文档页面的顶部:
PAMauthentication插件是一个商业扩展
这意味着它可以在mySQL Enterprise中使用,这是Oracle专有的mySQL代码库分支。 在MariaDB或社区版本的mySQL中,没有任何企业function,除非它们是由Oracle以外的人从头开始重写的。
看来,MariaDB有这个插件,文档在:
https://kb.askmonty.org/en/pam-authentication-plugin
我看到没有提到组映射,它可能不会在GPLed源代码中实现。