grant 了一个用户 zhang 可以 select 数据库 schoolDB 的 Vjava 视图,
mysql> grant select on schoolDB.Vjava to zhang@‘192.168.231.%’ identified by ‘123456’;
Query OK, 0 rows affected (0.00 sec)
然后,使用创建的账号尝试登录数据库,报错
[root@localhost ~]# mysql -u zhang -p
Enter password:
ERROR 1045 (28000): Access denied for user ‘zhang’@‘localhost’ (using password: YES)
查看原因,
mysql> select host,user from user;
±----------------------±------+
| host | user |
±----------------------±------+
| 127.0.0.1 | root |
| 192.168.231.% | root |
| 192.168.231.% | zhang |
| localhost | root |
| localhost.localdomain | root |
±----------------------±------+
5 rows in set (0.00 sec)
对比提示的错误,
错误中提到 : ‘zhang’@‘localhost’
而我们创建的是:zhang@‘192.168.231.%’
问题就出现在这里,
在登录的时候,必须给 新建用户指定 主机 host,否则,就会默认使用 ‘zhang’@‘localhost’ 登录,
但我们的数据库中没有 ‘zhang’@‘localhost’ 这个组合,就出错了。
解决办法:
[root@localhost ~]# mysql -u zhang -p -h 192.168.231.129
mysql> select user(),current_user();
±----------------------±--------------------+
| user() | current_user() |
±----------------------±--------------------+
| zhang@192.168.231.129 | zhang@192.168.231.% |
±----------------------±--------------------+
1 row in set (0.00 sec)
登录成功,
结论,错误提示,指出是用户名+host 的组合出现了问题,所以就需要使用正确的组合登录,
January the 18 2022 Tuesday
做个补充,
当提示的信息中,指明了是登录的用户出现了问题的时候,
我们就需要使用,正确的,用户名、主机名的搭配,进行登录,
而且,拿我这个案例来说,是不能使用 zhang@192.168.231.% ,也就是将用户名和主机名,二合一的方式去登录,
而必须使用,形如,mysql -u zhang -p -h 192.168.231.129,这种,主机和用户名 分别使用各自对应的参数来指定的方式去登录,
-u 指定用户名,
-h指定主机名,
要分开指定,不能二合一成,错误提示中的那种形式:zhang@192.168.231.%
这样就不会出现登录错误了。
其实,
ERROR 1045 (28000): Access denied for user ‘zhang‘@‘localhost‘ (using password: NO)
错误的解决思路也大致一样,
只是,MySQL 的初学者不熟悉造成的,多加练习,日子长了就都悟出来了,
这里的分享就是帮大家少走弯路,
January the 19th 2022 Wednesday