你的位置:
问答吧
-> MySQL
-> 问题详情
为什么mysqli函数可以连接mysql函数无法连接?
环境
FREEBSD8+MYSQL5.5+PHP5.2
mysqli_connect函数可以连接数据库
mysql_connect函数无法连接数据库
具体表现
mysql_connect连接的时候,无论是否提供用户密码,都出现
#1045 - Access denied for user 'wwwuser'@'localhost' (using password: NO)
其中wwwuser为php文件属性的owner.
请指教
作者: wayking
发布时间: 2010-08-30
开启了mysql连接了吗?
作者: renxiao2003
发布时间: 2010-08-30
一下是PHPINFO获取的数据
mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.5.5-m3
MYSQL_MODULE_TYPE no value
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_INCLUDE no value
MYSQL_LIBS no value
Directive Local Value Master Value
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port 3306 3306
mysql.default_socket no value no value
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off
mysqli
MysqlI Support enabled
Client API library version 5.5.5-m3
Client API header version 5.5.5-m3
MYSQLI_SOCKET /tmp/mysql.sock
Directive Local Value Master Value
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket no value no value
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.reconnect Off Off
作者: wayking
发布时间: 2010-08-30
在线等待,希望了解的人帮解决
作者: wayking
发布时间: 2010-08-30
自己搞定:
最近部曙一台服务器,CentOS + Apache + Tomcat + MySQL为主,另外装了PHP以提供灵活应用。装完PHP我放了个phpMyAdmin,一切正常,之后又放了个Discuz 7,结果就大跌眼镜了:我明明填写了正确的数据库用户名与密码,它老提示我连接被拒绝,mysql_error报的信息大概是这样子:Access denied for 'root'@'localhost', using password NO。连接被拒就算了,还非说我没有用密码?
想想phpMyAdmin也是PHP写的,都能正常连接,我实在是想不通这个问题,不知何从。后来网上搜一搜,国内没见有人提类似问题,国内的Access Deny基本都是mysql用户权限有问题;还好我在英文网站上找到了答案:原来是sql.safe_mode惹的祸,在php.ini里找到此项,将其置为Off就好了。附PHPDig里关于sql.safe_mode的说明:
http://www.phpdig.net/ref/rn41.html 写道
If sql.safe_mode is enabled, mysql_connect() and mysql_pconnect() ignore any arguments passed to them. Instead, PHP attempts to connect using the following details:
* host: local host
* user: the user PHP runs as
* password: an empty string ("")
我想只所以称之为sql.safe_mode,就是启用它之后,PHP源码里不会出现数据库用户名与密码,这样源码外泄也不会暴露数据库用户信息。但是它有一点局限性,就是只能用无密码的root用户登localhost,如果能指定就好了。当然也可能是我没找到地方,哪位找到的话告诉我啊。
感谢thxg的文章
http://thxg.javaeye.com/blog/429442
作者: wayking
发布时间: 2010-08-30