Esto es definitivamente posible. Vea aquí: https://www.percona.com/blog/2017/04/21/how-to-setup-and-troubleshoot-percona-pam-with-ldap-for-external-authentication/
En mi entorno, no configuré Samba o NSS/SSS y no me uno al dominio de Windows. Simplemente trato al servidor AD como un punto final LDAP. Así que comencé desde el paso 9 en las instrucciones anteriores.
EDIT: añadir instrucciones desde arriba enlace como sugerido por AfroThundr
Instalar el 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)
Configurar Percona PAM para autenticar a LDAP mediante la creación de /etc/pam.d/ mysqld con el siguiente contenido:
auth required pam_ldap.so
account required pam_ldap.so
Crear un usuario MySQL que la autenticación a través 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)
Iniciar sesión como este usuario y comprobar subvenciones:
[[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'@'%' |
+---------------------------------------------------
También tenga cuidado de AppArmor - que bloqueará el intento de autenticación.Es posible que vea engañosos mensajes de error en /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
es necesario agregar lo siguiente a /etc/apparmor.d/local/usr.sbin.mysqld
:
#include <abstractions/authentication>
y volver a cargar apparmor:
service apparmor restart
(Gracias a https://bugs.launchpad.net/ubuntu/+source/squid/+bug/1608984 por llevarme a la parte de AppArmor)
¿Está buscando una solución estrictamente MySQL o puede abordar este problema desde el lado de la aplicación (como en el programa para salir del problema) – Hugoware
Prefiero no programar mi salida a menos que sea necesario. Prefiero que la autenticación se maneje de forma nativa. He pensado en simplemente "autenticar" a través de la aplicación en LDAP y crear usuarios en la base de datos de usuarios de MySQL y vincularlos ... pero esto requiere que la aplicación tenga grandes credenciales con el servidor MySQL. – snicker
El proxy MySQL (mencionado por alguien más abajo) sería mi primera opción –