mysql修改密码后无法连接

mysql修改密码后无法连接,第1张

每隔一段时间用到mysql就会遇到这个问题,每次解决完之后就忘了,下次继续挠头. 百度一下,有用的答案也不多,于是终于勤快下过来mark了.

正确的修改密码步骤:

①update mysql.user set password=PASSWORD('新密码') where user='root'

②flush privileges(必须)

问题描述:

修改mysql密码后,无法再次连接。

问题原因:

上面那行命令中password=PASSWORDD('新密码'),写成了password='新密码',修改过程都没报错,quit bye后,就被拒绝连接了,hhhhhh2333完美PerfectParfait=_=......所以大家一定要小心别写错....

解决办法:

接下来就可以见证奇迹的时刻了!

Mission complete!

1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

mysql -u root -pvmwaremysql>use mysql

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

mysql>select host, user from user

2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY '1235' WITH GRANT OPTION

mysql>flush privileges 刷新权限使之生效

配置skip-name-resolve后,客户端无法连上mysql原因是由于mysql对连接的客户端进行DNS反向解析。 有2种解决办法: 1,把client的ip写在mysql服务器的/etc/hosts文件里,随便给个名字就可以了。 2,在 my.cnf 中加入 skip-name-resolve 。 对于第一种方法比较笨,也不实用,那么 skip-name-resolve 选项可以禁用dns解析,但是,这样不能在mysql的授权表中使用主机名了,只能使用IP。 我理解mysql是这样来处理客户端解析过程的, 1,当mysql的client连过来的时候,服务器会主动去查client的域名。 2,首先查找 /etc/hosts 文件,搜索域名和IP的对应关系。 3,如果hosts文件没有,则查找DNS设置,如果没有设置DNS服务器,会立刻返回失败,就相当于mysql设置了skip-name-resolve参数,如果设置了DNS服务器,就进行反向解析,直到timeout。 注:所谓反向解析是这样的: mysql接收到连接请求后,获得的是客户端的ip,为了更好的匹配mysql.user里的权限记录(某些是用hostname定义的)。 如果mysql服务器设置了dns服务器,并且客户端ip在dns上并没有相应的hostname,那么这个过程很慢,导致连接等待。 添加skip-name-resolve以后就跳过这个过程了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/6138700.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-16
下一篇2023-03-16

发表评论

登录后才能评论

评论列表(0条)

    保存