我想在 PHP 5.2 环境中测试为 PHP 5.3.5(作为 Apache 模块安装)编写的脚本。
我安装了 Apache 2.0.64 和 PHP 5.2.17 的全新副本,并完全按照我之前配置 PHP 5.3 的方式进行配置。除了我确实将 libmysql.dll
复制到 Apache bin 目录中(PHP 5.3 不再有此文件)。
两台服务器都是手动配置的(不是 XAMPP 版本或其他版本)并访问相同的本地安装的 mySQL Server 5.5.8。两台服务器都在系统帐户下作为 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 用户是在 PHP 代码中硬编码的,它不是 SYSTEM@localhost
。 SYSTEM 似乎是运行 Apache 的 Windows 帐户。 (如果我从管理员帐户启动 Apache,消息将更改为 Administrator@localhost
。)
我的 SQL Server 上的默认用户(名为“”)已被删除。如果此空用户存在,则 PHP 5.2 会成功连接到数据库,但由于权限问题,数据库选择 (mysql_select_db
) 会失败。
最佳答案
如果php.ini
中on中的sql.safe_mode
(不是PHP安全模式),则PHP始终使用该脚本连接到 SQL 服务器的所有者,而不是 mysql_connect()
中指定的用户。
我在配置过程中混淆了属性 safe_mode
和 sql.safe_mode
,花了我 6 个小时!
关于php - 用户 'SYSTEM' @'localhost' 的访问被拒绝(PHP 5.2.17 + mySQL 5.5.8 + Windows 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4958564/