› 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 · Jan 29, 2016 · 4223 views
    This topic created in 3891 days ago, the information mentioned may be changed or developed.

    貌似这个开源的程序一直运行的很好,也可能早坏了,但是今天突然发现了这个错误;
    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 replies  •  2016-01-30 02:56:19 +08:00
    tianice
        1
    tianice  
       Jan 29, 2016   ❤️ 1
    看看$this->user 这个值是什么,会不会是空
    dyniao
        2
    dyniao  
    OP
       Jan 29, 2016
    @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  
       Jan 29, 2016   ❤️ 1
    http://php.net/manual/zh/function.mysql-connect.php

    username

    用户名。默认值由 mysql.default_user 定义。 在 SQL 安全模式 时,参数被忽略,总是使用服务器进程所有者的用户名。

    password

    密码。默认值由 mysql.default_password 定义。在 SQL 安全模式 时,参数被忽略,总是使用空密码。

    很可能是这个原因。
    dyniao
        4
    dyniao  
    OP
       Jan 29, 2016
    @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  
       Jan 30, 2016
    安装 mariadb-server 就会多一个 mysql 的组和用户
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   836 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 20:44 · PVG 04:44 · LAX 13:44 · JFK 16:44
    ♥ Do have faith in what you're doing.