[以下更新]
我在使用 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)
这个用户名/密码组合肯定存在并且(据我所知)可以访问相关数据库。我想知道我做错了什么以及为什么原始脚本没有产生错误(或连接)。
更新:
我按照下面迈克尔的建议进行了连接,并且能够连接。我想重现这个问题,所以我删除了那个用户,然后通过创建了一个用户 testuser
CREATE 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