2007年5月1日 星期二

Mysql 函式 current_user() 及 USER()、SYSTEM_USER()、SESSION_USER() 差異

Mysql 函式 current_user() 及 USER()、SYSTEM_USER()、SESSION_USER() 有何差異,以下是文件的定義說明:

  1. USER()、SYSTEM_USER()、SESSION_USER() 傳回目前 MySQL 使用者名稱,在 MySQL 3.22.11 或更新的版本中,傳回值包含使用者名稱和客戶機的主機名稱。
  2. CURRENT_USER() 傳回目前連線帳號被驗証的使用者名稱。


使用下面的範例就可以很快的瞭解之間的差異
1.先建立一個測試用的帳號
CREATE USER 'user'@ '%' IDENTIFIED BY 'user';

2.使用建立的帳號由不同的機器連線

由本機連線結果

由另一部機器連線結果

由以上實驗結果可以發現current_user() 不會因為不同連線機器的結果而不同,USER()、SYSTEM_USER()、SESSION_USER() 會因不同連線機器有所差異。


應用:

Q1.取出目前連線的使用者帳號?

A1.SELECT SUBSTRING_INDEX(USER(),"@",1); 或 SELECT SUBSTRING_INDEX(CURRENT_USER(),"@",1);

Q2.取出目前連線的主機名稱?

A2.SELECT SUBSTRING_INDEX(USER(),"@",-1);

沒有留言: