V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
dyniao
V2EX  ›  MySQL

关于 mysql 的奇怪的问题,从何而来的 nobody@localhost

  •  1
     
  •   dyniao ·
    dyniao · 2016-01-29 21:03:11 +08:00 · 3340 次点击
    这是一个创建于 3015 天前的主题,其中的信息可能已经有所发展或是发生改变。

    貌似这个开源的程序一直运行的很好,也可能早坏了,但是今天突然发现了这个错误;
    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 了


    写到最后问题来了……这个错误是怎么产生的?如何解决?

    5 条回复    2016-01-30 02:56:19 +08:00
    tianice
        1
    tianice  
       2016-01-29 21:43:57 +08:00   ❤️ 1
    看看$this->user 这个值是什么,会不会是空
    dyniao
        2
    dyniao  
    OP
       2016-01-29 22:34:58 +08:00
    @tianice

    我发现了,什么账户运行这个就是提示什么
    Access denied for user '什么账户'@'localhost' (using password: NO)

    改成 apache nginx root
    各提示
    Access denied for user
    apache@localhost
    ngingx@localhost
    root@localhost


    为什么不用里边填写的 mysql 的账户,非得用 文件的运行权限账户 读数据库呢,别的站的没有这个问题,独这一个站。

    我是哪里配置错了么?
    lujjjh
        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 安全模式 时,参数被忽略,总是使用空密码。

    很可能是这个原因。
    dyniao
        4
    dyniao  
    OP
       2016-01-29 23:47:04 +08:00
    @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 高手的经验重要。
    HanSonJ
        5
    HanSonJ  
       2016-01-30 02:56:19 +08:00
    安装 mariadb-server 就会多一个 mysql 的组和用户
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1994 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:27 · PVG 09:27 · LAX 18:27 · JFK 21:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.