13

嗯,这就是我能看到的:

select host, user from mysql.user;

+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | me               |
| 127.0.0.1 | root             |
| ::1       | root             |
| localhost |                  |
| localhost | debian-sys-maint |
| localhost | root             |
| ubuntu    |                  |
| ubuntu    | root             |
+-----------+------------------+

我以 root 身份输入并想更改用户“我”的密码。

SET PASSWORD FOR 'me'@'%' = PASSWORD('letmein');
Query OK, 0 rows affected (0.00 sec)

好吧,正如我们所见,没有行受到影响。

至于尝试访问,结果如下:

Access denied for user 'me'@'localhost' (using password: YES)
michael@ubuntu:/var/www/cgi-bin$ 

因此,它提到了 localhost,而不是 %。

您能否建议我如何更改“我”的密码并解释 % 是什么?

4

2 回答 2

13

您需要设置密码localhost

SET PASSWORD FOR 'me'@'localhost' = PASSWORD('letmein');

FLUSH PRIVILEGES;

%意味着远程主机可以从任何其他服务器登录到 MySQL 服务器,而 localhost 意味着您只能从同一台机器登录到 MySQL 服务器。

于 2012-10-17T10:12:45.920 回答
2

'%' 表示您可以从连接到这些数据库的任何主机登录到数据库。如果要从 localhost 访问数据库,还可以将 localhost 定义为主机。

更改密码:

SET PASSWORD FOR 'me'@'%' = PASSWORD('letmein');

并且不要忘记执行:

FLUSH PRIVILEGES;

提交您的更改。请查看MySql 帐户管理。

更新:

在您的用户表上,我没有找到带有 host = localhost 的用户名,您必须首先通过(在此处添加用户)创建此用户:

Grant all privileges on *.* to me@'localhost' identified by 'letmein';
flush privileges;
于 2012-10-17T10:15:13.087 回答