在我的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服务器来说却是新手。
答案 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 manual或tutorials
,您也可以手动执行此操作答案 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();
}