【问题标题】:mysql duplicate root users on mac promysql在mac pro上重复root用户
【发布时间】:2014-10-24 02:43:11
【问题描述】:

我只是按照这里的说明设置了我的 Yosemite mysql:

http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/

我尝试使用 mysqladmin 命令设置 root 的密码。结果是现在我可以用新密码或者不用密码登录mysql了。我认为这是因为一个 root 用户(root@localhost)没有密码,而另一个 root 用户有新密码。

我应该在这里删除任何 root 用户吗?我不明白为什么 localhost 和 macbook-pro.local 都存在 2 个 root 用户。

+------+-------------------+
| User | Host              |
+------+-------------------+
| root | 127.0.0.1         |
| root | ::1               |
|      | localhost         |
| root | localhost         |
|      | macbook-pro.local |
| root | macbook-pro.local |
+------+-------------------+

所以我通过添加密码字段得到了另一种表示:

mysql> select User,Host,password from mysql.user;
+------+-------------------+-------------------------------------------+
| User | Host              | password                                  |
+------+-------------------+-------------------------------------------+
| root | localhost         | *xxx |
| root | macbook-pro.local |                                           |
| root | 127.0.0.1         |                                           |
| root | ::1               |                                           |
|      | localhost         |                                           |
|      | macbook-pro.local |                                           |
+------+-------------------+-------------------------------------------+

所以这让我明白有些用户的字符串是空的,我想毕竟没有重复。但是,我如何不让用户仅使用以下方式登录: mysql -u 根目录

【问题讨论】:

  • 只需编辑每个用户的权限并设置密码

标签: mysql macos


【解决方案1】:

为所有root用户设置密码:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('cleartext password');
SET PASSWORD FOR 'root'@'macbook-pro.local' = PASSWORD('cleartext password');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('cleartext password');
SET PASSWORD FOR 'root'@'::1' = PASSWORD('cleartext password');

如果您不希望any 用户可以在没有用户名和密码的情况下登录您的 mysql,请从列表中删除 any 用户:

DROP USER ''@'localhost'; 
DROP USER ''@'macbook-pro.local';

注意''(空白)用户是any用户。如果您没有为他们设置密码,任何用户(人类,机器)都可以使用any(表示任何东西,任何单词,任何短语)作为没有密码的用户名登录到您的mysql。 但是,这里的 2 个空白用户是 mysql (本身)在安装 mysql 服务期间使用的,它没有授予访问权限。如果你已经安装了 mysql 服务,可以放心删除。
see reference1
see reference2

【讨论】:

  • 看来重启电脑后。运行命令: mysql -u root 不再让我登录,即使其他 root 用户的密码仍然为空。该命令似乎只关心 root@localhost。
猜你喜欢
  • 2012-08-05
  • 1970-01-01
  • 2013-08-22
  • 2015-08-28
  • 2016-03-01
  • 2023-03-25
  • 2012-03-05
  • 1970-01-01
  • 2014-01-13
相关资源
最近更新 更多