Na verdade, estou usando o MariaDB aqui, mas estou trabalhando sob o pretexto de que o MariaDB é um "substituto" para o MySQL. Não ficarei surpreso se isso acabar sendo uma diferença / problema entre plataformas, mas espero que você dê uma olhada.
O negócio é o seguinte: estou usando o CentrifyDC para autenticação PAM com um domínio do Active Directory. Está funcionando bem para o acesso SSH / sudoer, e agora eu estou tentando descobrir o authN / Z para o MySQL ... err, MariaDB.
A autenticação do usuário parece funcionar bem. Eu crio um usuário e ele funciona como pretendido:
MariaDB [(none)]> grant all privileges on *.* to myuser identified via pam;
Para completar, vou fazer o login e verificar minhas doações e quem sou:
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)
Isso parece certo para o meu olho menos de especialista.
Agora estou tentando seguir a documentação do MySQL no link , sob o título "6.3.6.2.2.3. Autenticação de Senha Unix com Usuários Proxy e Mapeamento de Grupo". Esse pode ser o meu problema: seguir os documentos do MySQL para o MariaDB - mas não consegui encontrar um equivalente do MariaDB. Veja o que acontece.
De acordo com os documentos, eu crio o usuário proxy, o grupo, etc ... Observe que 'myuser' é um membro do grupo '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 ''@'';
Faça login como 'myuser' funciona. Vamos verificar nossas concessões:
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)
Isso é o que eu esperaria ver. Agora, de acordo com os documentos, vamos verificar quem somos intermediados por proxy como:
MariaDB [(none)]> SELECT USER(), CURRENT_USER(), @@proxy_user;
+-----------------+----------------+--------------+
| USER() | CURRENT_USER() | @@proxy_user |
+-----------------+----------------+--------------+
| myuser@localhost | @ | NULL |
+-----------------+----------------+--------------+
1 row in set (0.00 sec)
Então - lá nós temos isso. A conta 'myuser' não está recebendo acesso do 'my-domain-group' como deveria, mas é permitido acessar o login. O que da? Alguma sugestão?