中易网

MySQL密码正确却无法本地登录怎么办

答案:2  悬赏:0  
解决时间 2021-01-25 03:03
MySQL密码正确却无法本地登录怎么办
最佳答案
mysql服务没有启动,进入安装目录bin文件夹下启动mysql服务,或者net start mysql
首先kill掉MySQL进程然后在启动mysql的参数中加入
--skip-grant-tables
会发现这时无密码就可以登录mysql了。

全部回答
MySQL root密码正确,却怎么也无法从本地登录MySQL,提示
  1 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  这里后来经高人指点才发现mysql库中的user表缺少一个root指向host:localhost的数据项,只有一个root指向host:主机名的数据项,故怎么也无法利用root账户登录MySQL。
  总结一点就是root账户缺失了访问localhost主机的账户信息,导致无法本地登录。
  那有什么办法恢复root登录呢?
  这里记录一下今天遇到的纠结事情:
  首先kill掉MySQL进程然后在启动mysql的参数中加入
  --skip-grant-tables
  会发现这时无密码就可以登录mysql了。
  当然我们还必须修复root账户丢失的数据项。
  这里有两种解决方案:
  第一种是因为root账户初始的时候有3条记录,包含root对应localhost,hostname,127.0.0.1三条账户数据,我们可以update host为其他两项中一项为localhost即可。
  第二种是直接insert一条记录,host为localhost即可
  总结一下:即使root的host包含了主机名,127.0.0.1那么依然是无法正常登录的,这里必须要有localhost的host才行。
  如果上面办法还是无法正常登录我们可尝试另一种办法
  在本地用mysql命令直接回车可以进入mysql,但是里面只有test和information_schema数据库,没有mysql等数据库,使用use mysql报如下错:
  mysql> use mysql
  ERROR 1044 (42000): Access denied for user "@'localhost' to database 'mysql'
  意思是说没有指定user,没有权限访问数据库mysql。
  那么用root登录呢,输入正确的密码报如下错:
  [root@228827 ~]# mysql -uroot -p123456
  ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  密码正确的情况下,mysql数据库已经禁止了root用户在本地的登录权限了。
  使用root用户通过主机127.0.0.1登录就可以正常进入mysql,127.0.0.1和localhost对mysql数据库来讲是不同的主机,
  [root@228827 ~]# mysql -uroot -p123456 -h 127.0.0.1
  这让我想起了mysql下的user表。
  我们要进mysql看user表,一种方法可以通过上面的命令,如果不行,可以用下面的命令启动数据库,缺省密码进入
代码如下
[root@228827 ~]# /etc/init.d/mysql stop
[root@228827 ~]# /usr/local/mysql/bin/mysqld_safe –skip-grant-tables &
[root@228827 ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.1.57 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> use mysql
Database changed
mysql> select user,host,password from user where user='root';
+——+——————-+——————————————-+
| user | host | password |
+——+——————-+——————————————-+
| root | % | *A50E066E106320CF4142 |
| root | centos | *A50E066E106320CF4142 |
| root | 127.0.0.1 | *A50E066E1063608320CF4142 |
+——+——————-+——————————————-+
3 rows in set (0.12 sec)
  发现user表host字段中没有localhost,但是我的理解是%代表所有的主机都能登录的,为什么localhost不能呢,同样的情况我在5.0.45版的mysql上面做实验就不会发生localhost无法登录,我当前用的是5.1.57版的,难道是版本的问题?
  接下来的修改很明显了:
代码如下
mysql> update user set host='localhost' where user='root' and host='%';
mysql> flush privileges;
  OK,退出mysql,重启mysql就解决问题了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
捷达买手动挡的好还是自动的好
桥头美发屋地址好找么,我有些事要过去
女孩21岁后还能再长高吗
谁了解无烟电烤炉什么牌子的好?
喷画(喷绘)的材料有哪些?
年轻女生乳晕一直松弛怎么办
如果20张知重叠起来的厚度是1毫米,1200张这
cf手游下一个版本什么时候出来
30以内4的倍数有哪些
上海地铁安检员
什么是电子客票?
三洋电视如何进总线
瓷砖踢脚线工艺效果图
solidworks如何将bom材料表转成Excel表格,为
厨房不吊顶好吗?家里的层高也不是很高,而且
推荐资讯
客户销售应该注意哪些细节
模拟电子技术及应用
北京自体耳软骨隆鼻费用是多少
佳佳百货(佛山南海区)地址在什么地方,我要处
香港真的有洪兴社么??
公司给员工福利通知
国税什么原因可以到企业查帐
ass编码器并联什么电阻
车辆管理超员怎么样处理
我想给你看看真正的幼师是什么样子
河南息物流信息,河南息县发往福建泉州市永春
征集一些广告语..要比较长的 要有创意..高分
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?