技术分享 | MySQL 8.0 代理用户使用

技术分享 | MySQL 8.0 代理用户使用,第1张

某天有人问了我一个有关 MySQL PROXY 用户该如何使用的问题。

原问题是这样的:MySQL 版本从 5.5 升级到 8.0 后,proxy 用户怎么无法使用了?我之前是按照你博客上写的方法使用的,但是在升级后,安装插件提示如下错误:

这个咋回事?

我给了一个大家都很讨厌的答案: 去看 MySQL8.0 官方手册吧。

auth_test_plugin.so 是 MySQL 5.5 的插件,仅限于测试环境,不推荐线上使用,仅限功能演示。之后的一系列大版本安装包里都不包含这个插件,所以使用方法有些差异。

我在下面示例中使用插件 mysql_native_password ,这个插件自带 proxy 用户功能,所以需要在配置文件里开启对应的开关,并重启 MySQL 实例:(如果使用 sha256_password , 应该把参数 sha256_password_proxy_users=ON 也加到配置文件里。)

使用 proxy 用户功能之前,需要安装 mysql_no_login 插件,阻止隐藏在 proxy 用户下的真实用户登录 MySQL 。

创建一个 proxy 用户 ytt_fake ,使用认证插件 mysql_native_password :

使用 Proxy 用户登录 MySQL :

确认下变量 proxy_user 的值是不是 ytt_fake :

使用 proxy 用户登录后,查看当前登录用户信息:用户实际上是 ytt_real 。

确认下权限:具有真实用户的所有权限。

用 proxy 用户创建表、插入记录、查询、销毁表:

由于真实用户 ytt_real 使用认证插件 mysql_no_login ,MySQL 不允许此用户登录:

<delete id="deleteUser" parameterType="list">

delete from user where id in

<foreach collection="list" item="id" open="(" separator="," close=")">

#{id}

</foreach>

</delete>

<select id="findUserBySex" resultType="user">

select * from user where name in

<foreach collection="roleNoList" item="name" index="index" open="(" separator="," close=")">

#{roleNo}

</foreach>

</select>

<insert id="addUser" parameterType="user" >

insert into user(name,id,code) values

<foreach collection="list" item="item" separator=",">

(#{item.name},#{item.id},#{item.code})

</foreach>

</insert>

<update id="updateUser" parameterType="user">

update user set a = #{fptm},b=#{csof} where c in

<foreach collection="list" item="item" open="(" separator="," close=")">

#{item}

</foreach>

</update>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5908374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存