mysql 切换用户,切换用户通常有两种场景

首页 2025-10-09 13:52:25


在 MySQL 中切换用户通常有两种场景:
  1. 在 MySQL 命令行客户端(CLI)中,从一个用户切换到另一个用户。
  2. 在 SQL 语句中,将当前会话的权限切换到另一个已存在的用户。
下面我们分别来看这两种情况。

场景一:在 MySQL 命令行客户端中切换用户

这是最常见的操作,本质上是退出当前用户的连接,然后用新用户重新连接

方法:exit 然后重新登录

  1. 退出当前会话在 MySQL 提示符 (mysql>) 后输入 exit 或 quit 或 \q
    sql
    mysql> exit
    Bye
    
     
     
  2. 用新用户重新登录在系统的终端(不是 MySQL 提示符)中,使用新的用户名和密码登录。
    bash
    mysql -u new_user -p
    
     
     
    系统会提示你输入 new_user 的密码。
    plaintext
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 12
    Server version: 8.0.29-0ubuntu0.22.04.3 (Ubuntu)
    
    ...
    
    mysql>
    
     
     
    现在你已经成功切换到 new_user 了。

场景二:在当前会话中切换用户(权限切换)

如果你已经登录了 MySQL,并且不想断开连接,但想临时以另一个用户的身份执行操作,可以使用 SET ROLE 或 SET SESSION AUTHORIZATION 命令。
注意:这种方法要求你当前登录的用户具有相应的权限来切换到目标用户。

方法一:使用 SET ROLE (推荐)

SET ROLE 是更现代、更灵活的方法,它允许你在已授予的 “角色” 或用户之间切换。
  1. 授予切换权限首先,需要有一个管理员用户(如 root)将目标用户的权限授予当前用户。
    sql
    -- 假设你当前是 'admin_user',想切换到 'readonly_user'
    -- 使用 root 用户执行以下命令:
    GRANT readonly_user TO admin_user;
    
     
     
  2. 切换角色 / 用户现在,admin_user 可以在自己的会话中切换到 readonly_user
    sql
    -- admin_user 登录后执行:
    SET ROLE readonly_user;
    
     
     
    执行后,当前会话的权限就变成了 readonly_user 的权限。
  3. 验证切换你可以查看当前用户来验证。
    sql
    SELECT CURRENT_USER();
    -- 输出: 'readonly_user'@'localhost'
    
     
     
  4. 切换回原始用户
    sql
    SET ROLE DEFAULT;
    
     
     
    这会将权限切换回你登录时的原始用户(admin_user)。

方法二:使用 SET SESSION AUTHORIZATION (权限要求更高)

这个命令可以直接将会话的权限切换到另一个用户,但它要求当前用户拥有 SUPER 权限或 PROXY 权限,因此风险更高。
sql
-- 假设当前用户有足够权限
SET SESSION AUTHORIZATION 'other_user';
 
切换后,CURRENT_USER() 会显示为 'other_user'@'host'
要切换回来,你需要再次执行 SET SESSION AUTHORIZATION 或重新连接。

总结

方法 命令 场景 优点 缺点
退出重登 exit 然后 mysql -u ... 最常用。在不同用户间完全切换。 简单、安全、直观。 需要断开并重新建立连接。
SET ROLE SET ROLE 'user_name'; 当前会话中临时切换权限。 无需断开连接,灵活,权限控制精细。 需要预先配置权限,有一定复杂性。
SET SESSION AUTHORIZATION SET SESSION AUTHORIZATION 'user_name'; 当前会话中强制切换用户。 无需断开连接。 权限要求高(SUPER),安全性风险大。
对于绝大多数日常操作,场景一(退出重登) 是最简单、最安全的选择。
nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密