开发者社区 问答 正文

技术运维问题 - MYSQL使用 -RDS MySQL 高安全网络模式 select current_user() 替代方法


1. Select current_user(); 在不同网络模式下返回的结果不同
2. 高安全网络模式下,返回当前连接使用的用户名的方法




1. select current_user(); 在不同网络模式下返回的结果不同


  • 对于采用高安全网络模式的实例,select current_user(); 查询当前登录用户时,会返回当前连接的客户端IP和端口:



  • 对于采用标准网络模式的实例,select current(); 查询当前登录用户时,会返回当前连接使用的用户名。

[url=http://img01.taobaocdn.com/tfscom/TB1ev4oJFXXXXacXVXXXXXXXXXX.png]



2. 高安全网络模式下,返回当前连接使用的用户名的方法


请使用下面的查询替代:

  1. select concat(user,’@’,substring(host,1,instr(host,’:’)-1)) CUfrom information_schema.processlistwhere id = connection_id();




如问题还未解决,请联系 售后技术支持

展开
收起
梨好橙 2018-09-23 00:14:40 1704 分享 版权
阿里云 AI 助理回答

回答

  1. Select current_user(); 在不同网络模式下返回的结果不同

    • 当数据库实例配置为高安全网络模式时,执行SELECT current_user();可能会因为连接的客户端IP和端口信息而显示出与标准网络模式下不同的结果。在高安全模式下,此命令可能不仅显示用户名,还会涉及到客户端的网络信息,反映出更详细的连接身份验证细节。而对于标准网络模式,该命令通常仅返回当前登录用户的用户名。
  2. 高安全网络模式下,返回当前连接使用的用户名的方法

    • 要在高安全网络模式下准确获取当前连接使用的用户名,可以使用以下SQL查询:

      SELECT CONCAT(user, '@', SUBSTRING_INDEX(host, ':', 1)) AS CU
      FROM information_schema.processlist
      WHERE id = CONNECTION_ID();
      

      这个查询从information_schema.processlist表中筛选出当前连接(通过CONNECTION_ID()确定)的信息,并构造出一个字符串,格式为“用户名@客户端地址(不包含端口号)”,从而提供了一个与标准网络模式下current_user()相似的结果,专注于展示用户名及简化后的客户端地址信息。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答