我想在PHP5.2环境中测试一个为PHP5.3.5编写的脚本(作为Apache模块安装)。
我安装了Apache 2.0.64和PHP 5.2.17的新副本,并按照之前配置PHP 5.3的方式对其进行了配置。除了我将libmysql.dll复制到Apache bin目录中(PHP5.3不再有这个文件)。
这两个服务器都是手动配置的(不是XAMPP版本或其他版本),并访问相同的本地安装的mySQL服务器5.5.8。两台服务器都在system帐户下作为Windows Server运行。
PHP 5.3运行良好,PHP 5.2返回错误:
Warning: mysql_connect() [function.mysql-connect]: Access denied
for user 'SYSTEM'@'localhost' (using password: NO) in C:\Tools\htdocs\myscript.php on line 33我使用的SQL-user是用PHP代码硬编码的,它不是SYSTEM@localhost。系统似乎是运行Apache的Windows帐户。(如果我从管理员帐户启动Apache,则消息更改为Administrator@localhost。)
在我的SQL-Server上删除了默认用户(名为'')。如果这个空用户存在,PHP5.2将成功连接到数据库,但由于权限的原因,数据库选择(mysql_select_db)失败。
发布于 2011-02-10 23:10:05
如果中的sql.safe_mode (不是PHP安全模式)在php.ini中的上,PHP将始终使用脚本所有者连接到SQL server,而不是mysql_connect()中指定的用户。
我在配置过程中混淆了safe_mode和sql.safe_mode属性,花了我6个小时!
答案可以在这里找到:http://www.php.net/manual/de/ref.mysql.php#72632
发布于 2011-02-10 23:04:39
问题是您没有为mysql_connect指定正确的用户名和密码。不要将它们留空(并让PHP使用默认用户),而是指定一个实际的用户名和密码,该用户名和密码是使用GRANT (或phpMyAdmin或任何其他管理客户机)添加到MySQL中的。
允许无密码身份验证是一个很大的禁忌。允许管理员在没有密码的情况下访问是非常可怕的。相反,应该为所有程序创建有限的用户帐户。只有在绝对必要时才使用特权帐户...
https://stackoverflow.com/questions/4958564
复制相似问题