暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的Windows身份验证插件

MySQL在企业版里为用户提供Windows Pluggable Authentication”,用于在Windows上执行外部身份验证,使MySQL 服务器能够使用本机Windows服务对客户端连接进行身份验证。已经登录到Windows的用户可以根据其环境中的信息从MySQL客户端程序连接到服务器,而无需指定额外的密码。

客户端和服务器在认证握手时交换数据包。数据交换后,服务器创建了一个上下文对象,该对象用于标识Windows操作系统中客户端,包括客户端帐户的名称。Windows身份验证插件使用客户端的身份来检查它是定的帐户还是组的成员。

Windows身份验证插件提供以下功能:
外部身份验证:Windows身份验证使MySQL 服务器能够接受来自MySQL授权表之外的用户的连接。(这些用户已经登录到Windows)
支持代理用户:Windows身份验证可以向MySQL返回一个不同于客户端程序传递的外部用户名的用户名。这意味着插件可以返回MySQL用户,该用户定义了外部windows认证用户应该拥有的权限。例如,一个名为joe的Windows用户可以连接并拥有MySQL用户developer的权限。
外部身份验证

插件的安装使用非常简单,与其他插件的安装方式相同,可以预先写入my.ini配置文件,也可以在MySQL运行时执行

    INSTALL PLUGIN authentication_windows SONAME 'authentication_windows.dll';
    复制

    安装成功后,创建一个MySQL用户,将其与Windows的用户进行关联,例如,

       CREATE USER sql_admin IDENTIFIED WITH authentication_windows AS '"YITAO.XU"';
      复制

      之后,执行

        mysql --user=sql_admin
        复制

        无需输入密码即可登录MySQL服务器,用户的验证将通过Windows进行。插件除了支持指定用户,还可以支持组,或域。例如,

          CREATE USER sql_accounting
          IDENTIFIED WITH authentication_windows
          AS 'SomeDomain\\Accounting';
          复制

          关于具体的语句使用,读者可以参考官网手册,注意一下相关的语法。

          代理用户

          MySQL支持代理用户的概念,客户端可以使用一个帐户连接MySQL服务器进行身份验证,但可以在连接时拥有另一个帐户的权限。假设读者希望Windows用户使用单个用户名连接,但根据其Windows用户名和组名将其映射到特定的MySQL帐户时,可以使用代理用户。

          假设local_user和MyDomain\domain_user应该映射到MySQL的local_wlad 帐户,MyDomain\Developers域组中的用户应该映射到MySQL的local_dev 帐户,本地管理员应该映射到MySQL的local_admin 帐户。则可以进行如下操作:

          1.创建一个代理用户

            CREATE USER win_proxy
            IDENTIFIED WITH authentication_windows
            AS 'local_user = local_wlad,
            MyDomain\\domain_user = local_wlad,
            MyDomain\\Developers = local_dev,
            BUILTIN\\Administrators = local_admin';
            复制

            2.为了保证代理用户能够正常工作,必须创建相关的代理账户

              CREATE USER local_wlad
              IDENTIFIED WITH mysql_no_login;
              CREATE USER local_dev
              IDENTIFIED WITH mysql_no_login;
              CREATE USER local_admin
              IDENTIFIED WITH mysql_no_login;
              复制

              3.赋予代理权限

                GRANT PROXY ON local_wlad TO win_proxy;
                GRANT PROXY ON local_dev TO win_proxy;
                GRANT PROXY ON local_admin TO win_proxy;
                复制

                之后,登录Windows的不同用户可以按照其映射的代理用户使用不同的权限。

                以上内容是关于MySQL的外部认证功能的介绍,除了Windows之外还支持PAM和LDAP等方式,感兴趣的读者可以访问MySQL的官网。企业级用户如果有相关需求,可以直接利用企业版所提供的相关功能。

                感谢关注“MySQL解决方案工程师”

                我的新书《MySQL高可用解决方案——从主从复制到InnoDB Cluster》已经上市,感兴趣的朋友可以通过下面的链接购买。

                文章转载自MySQL解决方案工程师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论