1
在下面的代碼中,我得到的輸出告訴我當前用戶是[email protected]%
,然後第二個查詢會給我一個錯誤,說明[email protected]
被拒絕了INSERT權限。是否從不同的數據庫交換機中選擇用戶?
$query = "SELECT CURRENT_USER();"
$result = mysql_query($query);
if(mysql_num_rows($result))
{
$data = mysql_fetch_assoc($result);
echo(" current user - ". $data['CURRENT_USER()'] . "\n"); //current user - [email protected]%
}
$query = "INSERT INTO DIFF_DATABASE.HISTORY (DATA) VALUES (\"" . $data. "\")";
if(mysql_query($query) == false)
{
echo(mysql_error()); // INSERT command denied to user 'myuser'@'localhost' for table 'HISTORY'
}
它看起來像有MySQL用戶從[email protected]%
到[email protected]
開關這是如何發生的呢?我猜這是因爲我正在從第二個查詢中的另一個數據庫中進行選擇。
''%可出現爲補助主機名,這是一個通配符,這意味着任何主機。但我不認爲它可以成爲實際用戶連接的一部分,即客戶端主機的名稱或IP。我不確定爲什麼'CURRENT_USER()'首先返回它。 – Barmar
當我從'mysql.user'表中選擇用戶,其中'user = myuser'時,我只看到'myuser'和主機'%' –
對,這就是授權存儲的地方,而且是通配符。但是您登錄的實際用戶具有真實的主機名。 – Barmar