我試圖想出一個計劃,允許用戶使用LDAP來驗證MySQL數據庫(許多,實際上)。更具體地說,ActiveDirectory。數據庫可能會通過應用程序訪問,而不是網頁。我有什麼選擇?使用LDAP(AD)進行MySQL身份驗證
編輯:
好。似乎沒有「官方」方式允許使用LDAP在MySQL上進行身份驗證。還有什麼其他選擇?我們可以將LDAP用戶和密碼同步到MySQL用戶表嗎?
我試圖想出一個計劃,允許用戶使用LDAP來驗證MySQL數據庫(許多,實際上)。更具體地說,ActiveDirectory。數據庫可能會通過應用程序訪問,而不是網頁。我有什麼選擇?使用LDAP(AD)進行MySQL身份驗證
編輯:
好。似乎沒有「官方」方式允許使用LDAP在MySQL上進行身份驗證。還有什麼其他選擇?我們可以將LDAP用戶和密碼同步到MySQL用戶表嗎?
這是可能的MySQL代理。還有你需要知道做這項工作的幾件事情:
這兩個頁面將幫助您開始: interceptin的http://forge.mysql.com/tools/tool.php?id=79
我個人找不到任何信息表明這是可能的。我看到的只是使用MySQL作爲LDAP目錄的數據存儲。
我幾乎一直處於相同的情況。這就是我來這裏的原因!通常我不會發布,如果我可以找到它與谷歌機器;) – snicker 2009-08-25 18:21:04
好像你areout of luck :(
你能使用PostgreSQL?
只不過它使用LDAP作爲身份驗證方法,這種身份驗證方法的操作類似於密碼。LDAP只用於驗證用戶名/密碼對,因此用戶必須已經存在於數據庫中才能使用LDAP進行認證,所使用的服務器和參數在文件pg_hba.conf中的ldap關鍵字之後指定,該參數格式爲:
ldap[s]://servername[:port]/base dn[;prefix[;suffix]]
PostgreSQL可能是一個選項。我還沒有部署,目前正處於規劃階段......在實施解決方案的MySQL之前發現的好東西,並且不必擔心數據遷移。謝謝你。 – snicker 2009-08-25 18:42:41
請看着http://dev.mysql.com/doc/refman/5.5/en/news-5-5-7.html
這是在5.5.7發佈候選
沒錯,但是現在在MySQL中支持可插入的驗證模塊時,並沒有任何實際的模塊,對吧?所以我不能設置這個來對Windows或LDAP或NIS進行身份驗證,直到有人寫這些,據我瞭解... – GregW 2011-09-02 20:52:49
它仍然有點迂迴,但如果你有PAM-LDAP設置,你可以使用已經編寫[PAM插件](http://dev.mysql.com/doc/refman/5.5/en/pam-authentication-plugin.html)。 – quickshiftin 2012-08-29 03:49:20
現在這是可能的商業擴展,例如與MySQL External Authentication for Windows:
這使您可以配置MySQL以使用本機Windows服務來驗證客戶端連接。登錄到Windows的用戶可以根據其環境中的令牌信息從MySQL客戶端程序連接到服務器,而無需指定額外的密碼。
您可以使用GPL下的Infoscope Hellas L.P.提供的auth_ldap插件。
它可以從SourceForge上下載: http://sourceforge.net/projects/mysqlauthldap/
首頁: http://infoscope.gr/mysqlauthldap
插件仍然是測試版僅用於UNIX安裝工作。
現在,通過在2017年底,我可以建議是:
https://www.percona.com/doc/percona-server/LATEST/management/pam_plugin.html
Percona的PAM認證插件是MySQL的身份驗證插件的免費和開源實現。該插件充當MySQL服務器,MySQL客戶端和PAM堆棧之間的中介。服務器插件向PAM堆棧請求認證,通過線路將來自PAM堆棧的任何請求和消息轉發給客戶端(以明文形式),並讀取PAM堆棧的任何答覆。
這是不是測試,我不知道它有多好。
在我的環境中,我沒有設置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部分)
而不是隻發佈該鏈接,你可以在你的答案中發佈相關的部分。這將創建一個更完整的答案,並確保您的答案仍然相關,如果該鏈接斷裂。 – AfroThundr 2018-02-12 21:59:04
您是否正在嚴格尋找MySQL解決方案,或者您是否可以從應用程序方面處理此問題(如程序中出現問題的方式) – Hugoware 2009-08-25 18:50:10
除非必須,否則我寧願不編程。我寧願在本地處理身份驗證。我想過通過LDAP中的應用程序進行「身份驗證」,並在MySQL用戶數據庫中創建用戶並將其鏈接起來......但這需要應用程序擁有MySQL服務器的大量憑據。 – snicker 2009-08-25 19:25:05
MySQL代理(如下面的人提到的)將是我的第一選擇 – 2009-08-25 22:15:54