貌似这个开源的程序一直运行的很好,也可能早坏了,但是今天突然发现了这个错误;
Access denied for user 'nobody'@'localhost' (using password: NO)
一些必要的说明
前几天 yum update 过
mysql Ver 14.14 Distrib 5.6.28, for Linux
账号密码都正确
GRANT USAGE ON *.* TO 'sc'@'localhost' IDENTIFIED BY PASSWORD <secret>
GRANT ALL PRIVILEGES ON 'sc'.* TO 'scdb'@'localhost' WITH GRANT OPTION
GRANT ALL PRIVILEGES ON 'sc'.* TO 'scdb'@'localhost'
用 mysql_connect 连接的。
@mysql_connect($this->host, $this->user, $this->pass, true)
mysql_error()显示的错误就是
Access denied for user 'nobody'@'localhost' (using password: NO)
改成
@mysql_connect('localhost', '账', '密', true))
也是同样的错误,我就见了 G 了!
代码里边搜索的 根本没有 nobody 的字符,也看不到相关的问题。
感觉唯一 nobody 相关的就是 文件 nobody:nobody 了
写到最后问题来了……这个错误是怎么产生的?如何解决?
1
tianice 2016-01-29 21:43:57 +08:00 1
看看$this->user 这个值是什么,会不会是空
|
2
dyniao OP @tianice
我发现了,什么账户运行这个就是提示什么 Access denied for user '什么账户'@'localhost' (using password: NO) 改成 apache nginx root 各提示 Access denied for user apache@localhost ngingx@localhost root@localhost 为什么不用里边填写的 mysql 的账户,非得用 文件的运行权限账户 读数据库呢,别的站的没有这个问题,独这一个站。 我是哪里配置错了么? |
3
lujjjh 2016-01-29 22:51:31 +08:00 1
http://php.net/manual/zh/function.mysql-connect.php
username 用户名。默认值由 mysql.default_user 定义。 在 SQL 安全模式 时,参数被忽略,总是使用服务器进程所有者的用户名。 password 密码。默认值由 mysql.default_password 定义。在 SQL 安全模式 时,参数被忽略,总是使用空密码。 很可能是这个原因。 |
4
dyniao OP @lujjjh 一语中的
确实是这个问题,你说到这我才想起来改过 php.ini 里边有个值 sql.safe_mode=Off 我给 on 了 这样就不允许 不允许带参数的 mysql connect 了 sql.safe_mode boolean If turned on, database connection functions that specify default values will use those values in place of any user-supplied arguments. For details on the default values, see the documentation for the relevant connection functions. 折腾半天,搜来搜去,还是 v2 高手的经验重要。 |
5
HanSonJ 2016-01-30 02:56:19 +08:00
安装 mariadb-server 就会多一个 mysql 的组和用户
|