2010-06-16 102 views
1

我有這樣的代碼:爲什麼我不能在MySQL中創建數據庫拋出PHP?

$link = mysql_connect("localhost", "ctmanager", "blablabla"); 
if (! $link) 
    die ("I cannot connect to MySQL.<br>\n"); 
else 
    print "Connection is established.<br>\n"; 

// Create the "ct" database. 
    mysql_query("create database ct", $link) or die("I cannot create the DB: ".mysql_error()."<br>\n"); 

我收到此錯誤信息:

I cannot create the DB: Access denied for user 'ctmanager'@'%' to database 'ct' 

沒有任何人有任何想法,爲什麼我不能創建一個數據庫,爲什麼我在「@%」符號錯誤信息?

ADDED

ctmanager是管理員。他應該有權限添加數據庫和用戶。

回答

0

這意味着用戶ctmanager不允許從「任何機器」(@'%'表示「在任何機器」)連接MySql服務器。

通常,訪問權限不僅限於我的用戶,還取決於用戶連接的機器。 「任何機器」意味着用戶可以通過網絡從任何計算機進行連接。用戶ctmanager可能只具有「本地主機」或「127.0.0.1」的訪問權限。

您必須添加一個允許從任何計算機訪問數據庫的新用戶(PhpMyAdmin - 如果已安裝 - 可以在此幫助您)。

0

@之後的部分是您(應該)從MySQL的特權表中連接的主機名。 %的意思是「任何主機」。因此,從任何主機連接的用戶ctmanager都無法訪問ct數據庫。 Amend your privileges以允許它。

1

用戶[email protected]%不允許創建數據庫。它在MySQL中沒有CREATE DATABASE權限。作爲特權用戶,在MySQL運行此命令:

GRANT CREATE DATABASE ON *.* TO [email protected]'%'; 

@%裝置「在任何主機」。你可以給同一個用戶賦予不同的權限,具體取決於用戶通過在@之後放置一個主機名來連接哪個主機: [email protected](用於來自「example.com」的「用戶」連接)。

+0

問題是,ctmanager是一個特權用戶。 – Roman 2010-06-16 12:09:49

+0

SHOW GRANTS說什麼? – 2010-06-16 13:01:32

-1

您是否嘗試過使用mysql_create_db()?在此之後,您可以使用mysql_select_db()選擇數據庫並按照習慣使用它。

+0

來自PHP站點的引用:「函數mysql_create_db()已棄用。最好使用mysql_query()來發出sql CREATE DATABASE語句。」 – TheHippo 2010-06-16 13:59:08

0

我知道這是一箇舊帖子,但我在搜索相同問題時發現了這個問題。 正確授予用戶創建數據庫權限的方法是:

GRANT CREATE ON 到'user'@'localhost'IDENTIFIED BY'password';

相關問題