windows登录安装版mysql数据库ERROR 1045 (28000)的解决方法

在使用mysql数据库进行远程登录时遇到了ERROR 1045 (28000): Access denied for user 'root'@'NJ-YF-1407-03' (using password: YES)。 检查了一下密码,发现没有输错。那么到底是怎么回事呢?

由于mysql服务安装在ip地址为172.16.210.229的主机上,所及我就远程登陆了该主机,发现登录命令 mysql   -uroot -p -h 172.16.210.229报了同样的错误,只能使用mysql   -uroot -p -h  127.0.0.1 或者mysql   -uroot -p等默认登录方式登录使用navicat或者heidiSQL等数据库连接工具亦无法登陆。


在此记录一下我解决这个问题的过程:

  首先,由于我的mysql是mysql-5.7.17安装版的,所以网上的那些关于修改my.ini配置文件的方法就不适用了。所以,解决问题的关键落在了用户权限上。

1.使用root用户登录mysql本机,使用默认命令登录(即 mysql -uroot -p) ,不指定主机地址默认登录本地服务。登录后,查询数据库名为"mysql"中的表“user”,此表存储了mysql登录用户的用户名、密码、相关权限等信息。

mysql> select host,user from user;
+------------+--------------+
| host         | user         |
+------------+--------------+
| localhost | lujx           |
| localhost | mysql.sys |
| localhost | tempuser  |
| localhost | root           |
+------------+---------------+

数据库中只有root'@'localhost',这就意味着这个root用户只能在localhost主机上登录,使用远程登录或者使用-h 172.16.210.229就没有权限,所以会被拒绝.所以要想实现在其他主机上登录该mysql服务。

2.解决此类问题有两种方法

a).修改用户的host

在mysql本地登录超级权限账号后,执行如下命令:

mysql>use mysql;
mysql>update user set host = '%' where user = 'root';

此时root用户支持任何主机可以登录。

b).创建root@‘%’用户

使用root超级权限用户登录系统后,注意,此处是使用‘root’@‘localhost'方式登录。执行命令

mysql>create user 'root'@'%'  identified by 'yourPassword' ,         yourPassword是你自定义的密码。再执行命令:

mysql>flush privileges         .用于刷新生效,

由于我要创建的是一个超级权限用户,所以我要授予该用户最高权限。执行命令

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourPassword' WITH GRANT OPTION;    用于授予'root'@'%'用户最高权限。

然后就可以从任何主机登录root账号了。

当然,如果需要root用户只能从特定的主机登录,只需要修改创建用户命令中的主机名即可,例如:指定root用户只能在172.16.210.121主机登录,则执行以下命令即可:

mysql>create user 'root'@'172.16.210.121'  identified by 'yourPassword' ,         yourPassword是你自定义的密码。再执行命令:

mysql>flush privileges         .用于刷新生效,

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.210.121' IDENTIFIED BY 'yourPassword' WITH GRANT OPTION;    用于授予'root'@'%'用户最高权限。

执行此操作后,'root'@'172.16.210.121'用户只能在172.16.210.121主机登录远程mysql服务。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值