【问题标题】:MySQL has two different passwords?MySQL有两个不同的密码?
【发布时间】:2015-07-24 02:56:33
【问题描述】:

我确定它们是不同事物的密码,但我不确定是什么。在终端连接 MySQL 时,我输入/usr/LOCAL/mysql/BIN/mysql -h host -u username -p,然后提示输入密码,密码为''。但是当使用 PHP 连接到 MySQL 时,我使用以下代码并且它可以工作

DEFINE('DB_HOST', 'localhost'); 
DEFINE('DB_USER', 'root'); 
DEFINE('DB_PASS', 'root'); 

$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASS,) or 
die('could not connect: '. mysqli_connect_error() );

如果我使用DEFINE('DB_PASS', '');,它会返回“用户'root'@'localhost'的访问被拒绝(使用密码:否)”,为什么似乎有两个单独的密码?

【问题讨论】:

  • 你在命令行中为hostusername 使用什么?他们是localhostroot
  • 下面的答案是正确的。如果你想让他们的密码一致,你可以运行select password from mysql.user where user='username' and host='localhost'。复制密码。然后运行update mysql.user set password='<copied password>' where user='username'。现在用户的密码应该是一致的。
  • 接受对你有用的答案。

标签: php mysql mamp mamp-pro


【解决方案1】:

问:为什么似乎有两个不同的密码?

答:因为您以两个不同用户的身份连接。

每个用户都有自己的密码和权限。

MySQL 数据库“用户”由两个部分标识:用户name主机

例如,这是三个不同的用户:

'username'@'localhost'
'username'@'127.0.0.1'
'username'@'%'

要查看数据库中定义的用户,可以查询mysql.user表,例如

SELECT user, host FROM mysql.user ;

您可能需要查看 MySQL 参考手册的相关部分。

参考:https://dev.mysql.com/doc/refman/5.5/en/adding-users.html

注意:mysql.user 表中的值 localhost 或连接与 TCP 环回地址 (127.0.0.1) 同义。它不会解析为该 IP 地址或任何其他 IP 地址。这是一个特殊值。

【讨论】:

    【解决方案2】:

    MySQL 默认使用 $user/$host/$password 比较,因此您当前的设置在 MySQL 中有两个不同的用户帐户 - root 和您在命令行中提供的任何用户名。每个都有自己的密码。

    此外,如果帐户没有(即空)密码,则无需在 CLI 上指定 -p 标志

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 2015-03-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多