Điều này chắc chắn có thể xảy ra. Xem tại đây: https://www.percona.com/blog/2017/04/21/how-to-setup-and-troubleshoot-percona-pam-with-ldap-for-external-authentication/
Trong môi trường của tôi, tôi không thiết lập Samba hoặc NSS/SSS và tôi không tham gia miền cửa sổ. Tôi chỉ coi máy chủ AD là điểm cuối LDAP. Vì vậy, tôi bắt đầu từ Bước 9 theo các hướng dẫn trên.
EDIT: Thêm hướng dẫn từ trên cao liên kết theo đề nghị của AfroThundr
Cài đặt plugin 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)
Configure Percona PAM để xác thực để LDAP bằng cách tạo /etc/pam.d/ mysqld với nội dung này:
auth required pam_ldap.so
account required pam_ldap.so
Tạo người dùng MySQL sẽ xác thực qua auth_pam:
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)
Đăng nhập như người dùng này và kiểm tra tài trợ:
[[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'@'%' |
+---------------------------------------------------
Cũng hãy cẩn thận của AppArmor - nó sẽ chặn các nỗ lực auth.Bạn có thể thấy sai lệch các thông báo lỗi trong /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
Bạn cần phải thêm dòng sau vào /etc/apparmor.d/local/usr.sbin.mysqld
:
#include <abstractions/authentication>
và tải lại AppArmor:
service apparmor restart
(Nhờ https://bugs.launchpad.net/ubuntu/+source/squid/+bug/1608984 để dẫn tôi đến phần AppArmor)
Bạn đang tìm kiếm một giải pháp MySQL đúng hoặc bạn có thể tiếp cận vấn đề này từ phía ứng dụng (như trong chương trình theo cách của bạn ra khỏi vấn đề) – Hugoware
Tôi không muốn chương trình theo cách của tôi ra, trừ khi tôi phải. Tôi muốn có xác thực được xử lý nguyên bản. Tôi đã nghĩ về việc "xác thực" đơn giản thông qua ứng dụng trong LDAP và tạo người dùng trong DB người dùng MySQL và liên kết chúng ... nhưng điều này yêu cầu ứng dụng phải có thông tin đăng nhập lớn với máy chủ MySQL. – snicker
Proxy MySQL (như được đề cập bởi ai đó bên dưới) sẽ là lựa chọn đầu tiên của tôi –