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

Kif*_*sif 7 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             |
+-----------+------------------+
Run Code Online (Sandbox Code Playgroud)

我以root身份登录,想要更改用户'我'的密码.

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

好吧,我们看不到任何影响行.

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

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

所以,它提到localhost,而不是%.

你能建议我如何更改'我'的密码并解释%是什么?

Ome*_*esh 8

您需要设置密码localhost:

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

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

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


Hab*_*lah 5

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

更改您的密码:

SET PASSWORD FOR 'me'@'%' = PASSWORD('letmein');
Run Code Online (Sandbox Code Playgroud)

并且不要忘记执行:

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

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

更新:

正如在您的用户表上一样,我找不到带有 host = localhost 的用户名,您必须首先通过以下方式创建此用户(在此处添加用户):

Grant all privileges on *.* to me@'localhost' identified by 'letmein';
flush privileges;
Run Code Online (Sandbox Code Playgroud)