嗯,这是我能看到的:
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,而不是%.
你能建议我如何更改'我'的密码并解释%是什么?
您需要设置密码localhost:
SET PASSWORD FOR 'me'@'localhost' = PASSWORD('letmein');
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
% 表示远程主机可以从任何其他服务器登录到MySQL服务器,而localhost表示您只能从同一台计算机登录MySQL服务器.
'%' 表示您可以从连接到该数据库的任何主机登录到数据库。如果您想从本地主机访问数据库,您还可以将本地主机定义为主机。
更改您的密码:
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)