2010-06-16 105 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';

相关问题