[更新如下]
我在使用Bitnami LAMP堆栈连接到MySQL数据库时遇到问题。这是我在最初托管数据库的共享托管服务器上连接的代码:
DEFINE ('DB_USER', 'username');
DEFINE ('DB_PASSWORD', 'password');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'database');
if ($dbc = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD)) { // Make the connnection.
if (!mysql_select_db (DB_NAME)) { // If it can't select the database.
// Handle the error.
trigger_error("Could not select the database!\n<br />MySQL Error: " . mysql_error());
exit();
} // End of mysql_select_db IF.
} else { // If it couldn't connect to MySQL.
trigger_error("Could not connect to MySQL!\n<br />MySQL Error: " . mysql_error());
exit();
} // End of $dbc IF.
在我的Bitnami服务器上运行它,我得不到任何响应(甚至没有错误消息)。 (PHP工作正常。)
然后我尝试了
<?php
$link = mysql_connect('localhost', 'username', 'password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
得到了
Could not connect: Access denied for user 'username'@'localhost' (using password: YES)
此用户名/密码组合肯定存在且(据我所知)可以访问相关数据库。我想知道我做错了什么以及为什么原始脚本不会产生错误(或连接)。
更新
我遵循迈克尔的建议,并且能够连接。我想重现这个问题,所以我删除了该用户,然后通过
创建了一个用户testuserCREATE USER 'testuser'@'%' IDENTIFIED BY '***';
GRANT SELECT ,
INSERT ,
UPDATE ,
DELETE ,
FILE ON * . * TO 'testuser'@'%' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
然后按照迈克尔的建议,我执行了
GRANT ALL PRIVILEGES ON test . * TO testuser@localhost IDENTIFIED BY 'password'
但我又来了
Could not connect: Access denied for user 'testuser'@'localhost' (using password: YES)
(无论我使用'%'还是'localhost',这都不起作用)
这是phpmyadmin
中testuser的权限Database Privileges Grant Table-specific privileges
test ALL PRIVILEGES No No Edit Privileges
答案 0 :(得分:2)
收到的错误消息很明确 - 您正在连接的用户无法通过您正在使用的密码进行访问。您需要相应地授予权限:
GRANT ALL PRIVILEGES on dbname.* to username@localhost IDENTIFIED BY 'thepassword';
答案 1 :(得分:0)
如果您的用户没有密码,请尝试使用
$link = mysql_connect('localhost', 'username');
答案 2 :(得分:0)
两件事:
答案 3 :(得分:0)
尝试
用户名:&#39; root&#39;
密码:&#39;&#39; (即没有密码)