2009-08-25 175 views
20

我試圖想出一個計劃,允許用戶使用LDAP來驗證MySQL數據庫(許多,實際上)。更具體地說,ActiveDirectory。數據庫可能會通過應用程序訪問,而不是網頁。我有什麼選擇?使用LDAP(AD)進行MySQL身份驗證

編輯:

。似乎沒有「官方」方式允許使用LDAP在MySQL上進行身份驗證。還有什麼其他選擇?我們可以將LDAP用戶和密碼同步到MySQL用戶表嗎?

+0

您是否正在嚴格尋找MySQL解決方案,或者您是否可以從應用程序方面處理此問題(如程序中出現問題的方式) – Hugoware 2009-08-25 18:50:10

+0

除非必須,否則我寧願不編程。我寧願在本地處理身份驗證。我想過通過LDAP中的應用程序進行「身份驗證」,並在MySQL用戶數據庫中創建用戶並將其鏈接起來......但這需要應用程序擁有MySQL服務器的大量憑據。 – snicker 2009-08-25 19:25:05

+0

MySQL代理(如下面的人提到的)將是我的第一選擇 – 2009-08-25 22:15:54

回答

0

我個人找不到任何信息表明這是可能的。我看到的只是使用MySQL作爲LDAP目錄的數據存儲。

+1

我幾乎一直處於相同的情況。這就是我來這裏的原因!通常我不會發布,如果我可以找到它與谷歌機器;) – snicker 2009-08-25 18:21:04

1

好像你areout of luck :(

你能使用PostgreSQL

只不過它使用LDAP作爲身份驗證方法,這種身份驗證方法的操作類似於密碼。LDAP只用於驗證用戶名/密碼對,因此用戶必須已經存在於數據庫中才能使用LDAP進行認證,所使用的服務器和參數在文件pg_hba.conf中的ldap關鍵字之後指定,該參數格式爲:

ldap[s]://servername[:port]/base dn[;prefix[;suffix]]

+0

PostgreSQL可能是一個選項。我還沒有部署,目前正處於規劃階段......在實施解決方案的MySQL之前發現的好東西,並且不必擔心數據遷移。謝謝你。 – snicker 2009-08-25 18:42:41

6

請看着http://dev.mysql.com/doc/refman/5.5/en/news-5-5-7.html

這是在5.5.7發佈候選

+1

沒錯,但是現在在MySQL中支持可插入的驗證模塊時,並沒有任何實際的模塊,對吧?所以我不能設置這個來對Windows或LDAP或NIS進行身份驗證,直到有人寫這些,據我瞭解... – GregW 2011-09-02 20:52:49

+1

它仍然有點迂迴,但如果你有PAM-LDAP設置,你可以使用已經編寫[PAM插件](http://dev.mysql.com/doc/refman/5.5/en/pam-authentication-plugin.html)。 – quickshiftin 2012-08-29 03:49:20

4

現在這是可能的商業擴展,例如與MySQL External Authentication for Windows

這使您可以配置MySQL以使用本機Windows服務來驗證客戶端連接。登錄到Windows的用戶可以根據其環境中的令牌信息從MySQL客戶端程序連接到服務器,而無需指定額外的密碼。

1

現在,通過在2017年底,我可以建議是:

https://www.percona.com/doc/percona-server/LATEST/management/pam_plugin.html

Percona的PAM認證插件是MySQL的身份驗證插件的免費和開源實現。該插件充當MySQL服務器,MySQL客戶端和PAM堆棧之間的中介。服務器插件向PAM堆棧請求認證,通過線路將來自PAM堆棧的任何請求和消息轉發給客戶端(以明文形式),並讀取PAM堆棧的任何答覆。

這是不是測試,我不知道它有多好。

0

這絕對有可能。看到這裏:https://www.percona.com/blog/2017/04/21/how-to-setup-and-troubleshoot-percona-pam-with-ldap-for-external-authentication/

在我的環境中,我沒有設置Samba或NSS/SSS,我沒有加入Windows域。我只是將AD服務器視爲LDAP端點。所以我從上面的第9步開始。

編輯:從上述鏈接添加指令由AfroThundr

安裝的Percona PAM插件作爲建議:

mysql> INSTALL PLUGIN auth_pam SONAME 'auth_pam.so'; 
Query OK, 0 rows affected (0.01 sec) 

mysql> INSTALL PLUGIN auth_pam_compat SONAME 'auth_pam_compat.so'; 
Query OK, 0 rows affected (0.00 sec) 

配置的Percona PAM通過創建/etc/pam.d/目錄來驗證到LDAP

auth required pam_ldap.so 
account required pam_ldap.so 

創建MySQL用戶,將通過auth_pam驗證:此內容mysqld的

mysql> CREATE USER [email protected]'%' IDENTIFIED WITH auth_pam; 
Query OK, 0 rows affected (0.00 sec) 

mysql> GRANT ALL PRIVILEGES ON testdb.* TO [email protected]'%'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> FLUSH PRIVILEGES; 
Query OK, 0 rows affected (0.00 sec) 

登錄爲這個用戶和檢查補助:

[[email protected] ~]# mysql -u user 
Password: <your LDAP/AD password> 
Welcome to the MySQL monitor. Commands end with ; or g. 
Your MySQL connection id is 22 
Server version: 5.7.17-13 Percona Server (GPL), Release 13, Revision fd33d43 

Copyright (c) 2009-2016 Percona LLC and/or its affiliates 
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. 

mysql> SHOW GRANTS; 
+-----------------------------------------------------+ 
| Grants for [email protected]%         | 
+-----------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'user'@'%'     | 
| GRANT ALL PRIVILEGES ON `testdb`.* TO 'user'@'%' | 
+--------------------------------------------------- 

另外注意的AppArmor的 - 它會阻止AUTH嘗試。您可能會看到/var/log/auth.log誤導性的錯誤消息:

Feb 12 13:37:36 mysqld[15164]: PAM _pam_init_handlers: no default config /etc/pam.d/other 
Feb 12 13:37:36 mysqld[15164]: PAM error reading PAM configuration file 
Feb 12 13:37:36 mysqld[15164]: PAM pam_start: failed to initialize handlers 

您需要添加以下到/etc/apparmor.d/local/usr.sbin.mysqld

#include <abstractions/authentication>

並重新加載的AppArmor:

service apparmor restart

(感謝https://bugs.launchpad.net/ubuntu/+source/squid/+bug/1608984將我引導至AppArmor部分)

+0

而不是隻發佈該鏈接,你可以在你的答案中發佈相關的部分。這將創建一個更完整的答案,並確保您的答案仍然相關,如果該鏈接斷裂。 – AfroThundr 2018-02-12 21:59:04