Mysql 函式 current_user() 及 USER()、SYSTEM_USER()、SESSION_USER() 有何差異,以下是文件的定義說明:
- USER()、SYSTEM_USER()、SESSION_USER() 傳回目前 MySQL 使用者名稱,在 MySQL 3.22.11 或更新的版本中,傳回值包含使用者名稱和客戶機的主機名稱。
- 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);
沒有留言:
張貼留言