如何为MySQL 8.0.28同一用户启用两种认证插件
在MySQL 8.0.28中为同一用户配置两种认证插件的方法
MySQL 8.0+支持为同一用户(相同用户名+主机组合)配置多种认证插件,刚好能满足你Go语言用caching_sha2_password、Django用mysql_native_password的需求,具体操作步骤如下:
1. 创建/配置用户的第一种认证方式(以caching_sha2_password为例)
如果用户还未创建,先执行以下命令创建用户并指定第一种认证插件:
CREATE USER 'dev_customers_rw'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_secure_password';
如果用户已存在,可跳过此步,直接添加第二种认证方式。
2. 添加第二种认证插件(mysql_native_password)
执行ALTER USER命令为同一用户添加第二种认证方式:
ALTER USER 'dev_customers_rw'@'%' IDENTIFIED WITH mysql_native_password BY 'your_secure_password';
注:这里的密码可以和第一种认证方式的密码相同,也可以不同,根据你的需求设置即可。
3. 验证配置结果
执行以下SQL查询用户的认证插件配置,就能看到和你示例中一样的两条记录:
SELECT user, host, plugin FROM mysql.user WHERE user = 'dev_customers_rw';
4. 配置用户权限(按需执行)
由于是同一个用户,权限是共享的,只需授权一次即可:
-- 替换为你实际需要的权限和数据库 GRANT ALL PRIVILEGES ON dev_customers.* TO 'dev_customers_rw'@'%'; FLUSH PRIVILEGES;
完成以上步骤后,Go语言客户端会自动使用caching_sha2_password认证,Django客户端则可以通过指定mysql_native_password插件(通常Django的MySQL驱动会自动适配,或者在配置中显式指定)完成连接。
内容的提问来源于stack exchange,提问作者sateesh
相关产品推荐
相关产品推荐

