我是编程新手,我一直在尝试从Murachs PHP和MySQL教学书中运行一个PHP应用程序,源代码实际上来自他们的网站,但一直收到错误信息。错误信息如下;
“数据库错误连接到数据库时出错。必须按照附录中的说明安装数据库.MySQL必须按照第1章中的说明运行。错误消息:SQLSTATE [HY000] [1045]用户拒绝访问'mgs_user'@'localhost'(使用密码:YES)“
我下载了XAMPP并且运行正常但由于某种原因我无法使用MySQL数据库。在过去的两天里,我搜索并搜索了一些搜索,但我似乎无法找到解决方案。
我记得在安装过程中设置了用户名和密码,我昨天通过PHPMyAdmin设置了一个名为“root”和密码的用户名,但为什么这个应用程序没有运行?
感谢任何帮助。
更新#1
以下是创建数据库,用户和密码的代码示例。
这是从Murach的网站下载的,因此代码应该是好的。我认为XAMPP / MySQL出现了一些错误,它不允许连接到数据库。
/*****************************************
* Create the my_guitar_shop1 database
*****************************************/
DROP DATABASE IF EXISTS my_guitar_shop1;
CREATE DATABASE my_guitar_shop1;
USE my_guitar_shop1; -- MySQL command
-- Create a user named mgs_user
GRANT SELECT, INSERT, UPDATE, DELETE
ON *
TO mgs_user@localhost
IDENTIFIED BY 'pa55word';
更新#2
我在PHPMyAdmin中创建了用户“mgs_user @ localhost”并赋予了权限,现在我收到以下错误;
“数据库错误 连接数据库时出错。
必须按照附录中的说明安装数据库。
MySQL必须按第1章所述运行。
错误消息:SQLSTATE [HY000] [1049]未知数据库'my_guitar_shop1'“
代码似乎是正确的,但它不是在MySQL中创建用户或数据库。
更新#3
通过PHPMyAdmin创建了数据库“my_guitar_shop1”,现在我在每条错误消息的下方都会收到相应代码的错误;
(!)注意:第16行的C:\ xampp \ htdocs \ book_apps \ ch05_guitar_shop \ product_manager \ index.php中的未定义索引:category_id
if ($action == 'list_products') {
// Get the current category ID
$category_id = $_GET['category_id']; <-----this is line #16
if (!isset($category_id)) {
$category_id = 1;
}
(!)致命错误:在第15行的C:\ xampp \ htdocs \ book_apps \ ch05_guitar_shop \ model \ category_db.php中的非对象上调用成员函数fetch()
function get_category_name($category_id) {
global $db;
$query = "SELECT * FROM categories
WHERE categoryID = $category_id";
$category = $db->query($query);
$category = $category->fetch(); <-----this is line #15
$category_name = $category['categoryName'];
return $category_name;
}
答案 0 :(得分:1)
最可能的原因是你没有创建'mgs_user'用户,为此你可以这样做:
CREATE USER 'mgs_user'@'localhost' IDENTIFIED BY 'password';
然后使用以下方式授予适当的权限:
GRANT ALL PRIVILEGES ON databaseName.* To 'mgs_user'@'localhost' IDENTIFIED BY 'password';
答案 1 :(得分:0)
最初从本书开始时我遇到了同样的问题,错误信息给出的描述“按照第1章中的说明”没有任何帮助。但是,如果您转到本书后面的附录,它会详细说明如何通过phpMyAdmin运行脚本,该脚本将创建练习所需的相应数据库。如果您正在运行Windows,详细信息请参见第818页,它为我解决了问题。希望有所帮助。