PHP代码不会创建数据库

时间:2016-02-24 10:57:16

标签: php mysql database

在我的Web应用程序中,它具有自安装功能,因此,在将其复制到服务器之后,您只需运行具有以下PHP代码的install.php文件。

define("DB_SERVER","localhost");
define("DB_USER","db_user");
define("DB_PASS","pass");

//create mysql connection
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS);

if(mysqli_connect_errno()){
    die("Connection Error");
}else{
    echo "MySQL Connection Successful!";
}


//create database if not exists
$sql = "CREATE DATABASE equiz";
$mysqlQuery = mysqli_query($connection, $sql);

if($mysqlQuery){
    echo "Database Created Successfully";
}else{
    die("Database Not Created!");
}

在localhost中,这非常好用。但是,当它被移动到服务器时,它会给我这个错误

Access denied for user 'db_user'@'localhost' to database 'equiz'

我已经预先与另一个数据库一起创建了用户db_user,并且我确信他已获得所有权限。 但我不确定这些权限是否仅适用于该特定数据库。

无论如何这个错误的任何线索?我对PHP有点了解,但对现实世界的Web服务器来说却是新手。

2 个答案:

答案 0 :(得分:2)

这里的关键是:

Access denied for user 'db_user'@'localhost' to database 'equiz'

如果是你的本地主机,那么你可能已经安装了phpMyAdmin。您需要授予db_user的访问权限。怎么做,有明确的手册:

http://docs.phpmyadmin.net/en/latest/privileges.html

如果您没有安装phpMyAdmin,reference the official MySQL manualtutorials

,您也可以手动执行此操作

答案 1 :(得分:2)

您需要为该用户设置权限:

GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'db_user'@'localhost' IDENTIFIED BY 'password';

然后尝试运行您的代码。

如果上述方法无效,请尝试创建用户所有权利:

CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'user_name'@'localhost';
FLUSH PRIVILEGES;

使用PHP创建:

//创建用户“user_name”

$mysqli->("CREATE USER 'user_name'@'%' IDENTIFIED BY 'pass_word';");

//创建数据库“new_db”

$mysqli->("CREATE DATABASE `new_db`;");

//在我们新创建的数据库上添加所有权限

$mysqli->("GRANT ALL PRIVILEGES on `new_db`.* TO 'user_name'@'%';");

<强>更新

连接数据库

// localhost <==> user_name <==> password <==> database
$mysqli = new mysqli("localhost", "user_id", "passwlrd", "db_name");

/* check connection */
if ($mysqli->connect_errno) 
{
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}