%在主机列中代表什么以及如何更改用户密码

时间:2012-10-17 10:11:28

标签: mysql

嗯,这就是我能看到的:

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,而不是%。

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

2 个答案:

答案 0 :(得分:8)

您需要为localhost设置密码:

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

FLUSH PRIVILEGES;

%表示远程主机可以从任何其他服务器登录MySQL服务器,而localhost表示只能从同一台计算机登录MySQL服务器。

答案 1 :(得分:0)

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

更改密码:

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

并且不要忘记执行:

FLUSH PRIVILEGES;

提交您的更改。请查看MySql Account Management.

<强>更新

在您的用户表中,我找不到使用host = localhost的用户名,您必须先创建此用户(此处为add user):

Grant all privileges on *.* to me@'localhost' identified by 'letmein';
flush privileges;