MYSQL数据库浅谈mysql密码遗忘和登陆报错的问题

MYSQL数据库浅谈mysql密码遗忘和登陆报错的问题,第1张

概述介绍《MYSQL数据库浅谈mysql密码遗忘和登陆报错的问题》开发教程,希望对您有用。

《MysqL数据库浅谈MysqL密码遗忘和登陆报错的问题》要点:
本文介绍了MysqL数据库浅谈MysqL密码遗忘和登陆报错的问题,希望对您有用。如果有疑问,可以联系我们。

MysqL应用MysqL登录暗码忘记,其实解决办法很简单,只需要在MysqL的主配置文件my.cnf里添加一行“跳过授权表”的参数选择即可!

MysqL应用在my.cnf中添加下面一行:

MysqL应用[root@test-huanqiu ~]# vim /etc/my.cnf              //在[MysqLd]区域里添加
........
skip-grant-tables                       //跳过授权表

MysqL应用然后重启MysqL服务,即可无暗码登录

MysqL应用[root@test-huanqiu ~]# /etc/init.d/MysqLd restart

MysqL应用登录后重置暗码

MysqL应用[root@test-huanqiu ~]# MysqL
MysqL> select host,user,password from MysqL.user;
+--------------------+------+-------------------------------------------+
| host | user | password |
+--------------------+------+-------------------------------------------+
| localhost | root | *481ACA1BD6D1E86221244904E9C0FABA33B40B84 |
| host-192-168-1-117 | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| host-192-168-1-117 | | |
+--------------------+------+-------------------------------------------+
6 rows in set (0.00 sec)

MysqL应用MysqL> update MysqL.user set password=password("123456") where host="localhost" and user="root";
query OK,1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0

MysqL应用MysqL> flush privileges;
query OK,0 rows affected (0.01 sec)

MysqL应用MysqL> select host,password from MysqL.user;
+--------------------+------+-------------------------------------------+
| host | user | password |
+--------------------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| host-192-168-1-117 | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| host-192-168-1-117 | | |
+--------------------+------+-------------------------------------------+
6 rows in set (0.00 sec)

MysqL应用MysqL>

MysqL应用再次将my.cnf里添加的那一行注释,然后重启MysqL

MysqL应用[root@test-huanqiu ~]# vim /etc/my.cnf
........
#skip-grant-tables

MysqL应用[root@test-huanqiu ~]# /etc/init.d/MysqLd restart

MysqL应用[root@test-huanqiu ~]# MysqL -p123456
MysqL>

MysqL应用-----------------------------------------------------------------------------------------------------------------------

MysqL应用发现的一个坑:

MysqL应用MysqL之前进行了全量备份,在恢复后,发现用之前的暗码登陆不进去了!
使用上面的方法,无暗码登陆后再重置暗码,但是重置暗码后发现仍然登陆不进去.

MysqL应用最后发现是因为MysqL.user表内容被清空了!
MysqL> select host,password from user;
Empty set (0.00 sec)

MysqL应用解决:

MysqL应用插入数据,再重置暗码

MysqL应用MysqL> insert into user(host,password) values("localhost","root","123456");query OK,1 row affected,3 warnings (0.01 sec)MysqL> select host,password from user;+-----------+------+----------+| host | user | password |+-----------+------+----------+| localhost | root | 123456 |+-----------+------+----------+1 row in set (0.00 sec)MysqL> update MysqL.user set password=password("123456") where host="localhost" and user="root";query OK,1 row affected (0.01 sec)Rows matched: 1 Changed: 1 Warnings: 0MysqL> select host,password from user;+-----------+------+-------------------------------------------+| host | user | password |+-----------+------+-------------------------------------------+| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |+-----------+------+-------------------------------------------+1 row in set (0.00 sec)MysqL> insert into user(host,password) values("127.0.0.1",3 warnings (0.00 sec)MysqL> select host,password from user;+-----------+------+-------------------------------------------+| host | user | password |+-----------+------+-------------------------------------------+| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 || 127.0.0.1 | root | 123456 |+-----------+------+-------------------------------------------+2 rows in set (0.00 sec)MysqL> update MysqL.user set password=password("123456") where user="root";query OK,1 row affected (0.00 sec)Rows matched: 2 Changed: 1 Warnings: 0MysqL> select host,password from user;+-----------+------+-------------------------------------------+| host | user | password |+-----------+------+-------------------------------------------+| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 || 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |+-----------+------+-------------------------------------------+

MysqL应用然后使用重置后的暗码就能正常登陆了!

MysqL应用------------------------------------------------------------------------------------------------------------------

MysqL应用MysqL登录报错1:

MysqL应用[root@test-huanqiu ~]# MysqL -p123456
ERROR 2002 (HY000): Can't connect to local MysqL server through socket '/var/lib/MysqL/MysqL.sock' (111)

MysqL应用[root@test-huanqiu ~]# ps -ef|grep MysqL
root 28279 1 0 12:55 ? 00:00:00 /bin/sh /usr/local/MysqL//bin/MysqLd_safe --datadir=/data/MysqL/data --pID-file=/data/MysqL/data/MysqL.pID
MysqL 29059 28279 0 12:55 ? 00:00:01 /usr/local/MysqL/bin/MysqLd --basedir=/usr/local/MysqL/ --datadir=/data/MysqL/data --plugin-dir=/usr/local/MysqL//lib/plugin --user=MysqL --log-error=/data/MysqL/data/MysqL-error.log --pID-file=/data/MysqL/data/MysqL.pID --socket=/usr/local/MysqL/var/MysqL.sock --port=3306
root 30726 11268 0 12:58 pts/2 00:00:00 grep MysqL

MysqL应用可知,当前MysqL.sock文件路径是/usr/local/MysqL/var/MysqL.sock,

MysqL应用解决办法:做软链接

MysqL应用[root@test-huanqiu ~]# ll /usr/local/MysqL/var/MysqL.sock
rwxrwxrwx. 1 MysqL MysqL 0 Nov 29 12:55 /usr/local/MysqL/var/MysqL.sock
[root@test-huanqiu ~]# rm -f /var/lib/MysqL/MysqL.sock
[root@test-huanqiu ~]# ln -s /usr/local/MysqL/var/MysqL.sock /var/lib/MysqL/MysqL.sock

MysqL应用这样就没问题了

MysqL应用[root@test-huanqiu ~]# MysqL -p123456
MysqL>

MysqL应用----------------------------------------------------------------------------------------------------

MysqL应用启动MysqL的时候报错:

MysqL应用Starting MysqL.... ERROR! The server quit without updating PID file (/data/MysqL/data/MysqL.pID).

MysqL应用尝试的解决办法:

MysqL应用(1)权限问题

MysqL应用可能是MysqL.pID文件没有写的权限,将MysqL的安装目录和数据目录的权限都设置成MysqL启动用户权限.比如都修改为MysqL:MysqL权限

MysqL应用(2)可能进程里已经存在MysqL进程

MysqL应用ps -ef|grep MysqL 查出要是有MysqL进程存在,就kill掉,再尝试重启MysqL

MysqL应用(3)可能是多次在机器上安装MysqL,有残余数据影响了服务的启动.

MysqL应用去MysqL的数据目录看看,如果存在MysqL-bin.index,就立刻删掉它,它就是罪魁祸首了!

MysqL应用(4)MysqL在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[MysqLd]节下有没有指定数据目录.

MysqL应用在[MysqLd]下添加设置,如datadir = /data/MysqL/data

MysqL应用(5)skip-federated字段问题

MysqL应用检查一下my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉.

MysqL应用(6)错误日志目录不存在

MysqL应用去my.cnf文件下是否有log日志配置路径,如果有,查看下日志目录是否存在,日志目录权限要确保是MysqL启动用户权限.

MysqL应用(7)selinux惹的祸,如果是centos系统,默认会开启selinux

MysqL应用闭它,打开/etc/selinux/config,把SEliNUX=enforcing改为SEliNUX=Disabled后存盘退出重启机器试试.
(8)重新初始化MysqL数据试试

MysqL应用切换到MysqL的安装目录下

MysqL应用./scripts/MysqL_install_db --basedir=/usr/local/MysqL --datadir=/data/MysqL/data --user=MysqL

MysqL应用--------------------------------

MysqL应用使用MysqL服务端授权的信息登录MysqL,报错如下:

MysqL应用ERROR 2003 (HY000): Can't connect to MysqL server on '192.168.1.14' (111)

MysqL应用可能的原因有:

MysqL应用1)可能网络连接问题,远程Ping 192.168.1.14,能Ping通,排除此情况;

MysqL应用2)MysqL服务端192.168.1.14的iptables里做了3306端口连接的白名单限制;

MysqL应用3)MysqL服务端192.168.1.14的my.cnf文件里配置了bind_address地址绑定,不允许本机连接;

MysqL应用4)MysqL服务端192.168.1.14的my.cnf文件里配置了skip_networking,这使用MysqL只能通过本机Socket连接(socket连接也是本地连接的默认方式),放弃对TCP/IP的监听;

MysqL应用5)排查DNS解析问题,检查MysqL服务端192.168.1.14的my.cnf文件里是否设置了skip_name_resolve.这个参数加上后,不支持主机名的连接方式.

MysqL应用6)排查--port问题,有可能MysqL服务端192.168.1.14的MysqL port不是默认3306,比如是3307端口,这样,远程连接的时候要加上--port=3307

MysqL应用7)排查用户和暗码问题,其实用户和暗码的错误,不会出现111的,所以排除用户暗码问题
ERROR 1045 (28000): Access denIEd for user 'root'@'XXXX' (using password: YES)

MysqL应用以上这篇浅谈MysqL暗码遗忘和登陆报错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持内存溢出PHP.

欢迎参与《MysqL数据库浅谈MysqL密码遗忘和登陆报错的问题》讨论,分享您的想法,内存溢出 jb51.cc为您提供专业教程。

总结

以上是内存溢出为你收集整理的MYSQL数据库浅谈mysql密码遗忘和登陆报错的问题全部内容,希望文章能够帮你解决MYSQL数据库浅谈mysql密码遗忘和登陆报错的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/sjk/1155645.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存