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就解决问题了

时间: 2024-11-03 04:50:06

MySQL密码正确却无法本地登录怎么办的相关文章

解决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主机的

MySQL密码正确却无法本地登录的解决方法_Mysql

MySQL root密码正确,却怎么也无法从本地登录MySQL,提示 复制代码 代码如下: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 这里后来经高人指点才发现mysql库中的user表缺少一个root指向host:localhost的数据项,只有一个root指向host:主机名的数据项,故怎么也无法利用root账户登录MySQL. 总结一点就是root账户缺失了访问loc

mysql密码正确连接提示用户名与密码错误

一,安装mysql数据库之后使用下面代码测试正常  代码如下 复制代码 <? $cn = mysql_connect("localhost","root","root") or die('Database Server  Password Error!'); if( $cn ) {  echo  'success'; } else {  echo 'fail'; } ?> 二,今天安装phpcms配置之后连接提示 Database S

【转载】正确重置 MySQL 密码

谁都不想弄丢家门钥匙,但不管多么小心,时间长了,这样的事情总会发生几次.MySQL密码也是一样,把它写在文档上不太安全,记在脑子里又难免会忘记.如果你忘记了MySQL密码,如何重置它呢? 下面是错误答案:首先停止MySQL服务,然后使用skip-grant-tables参数启动它: shell> /etc/init.d/mysql stop shell> mysqld_safe --skip-grant-tables & 此时无需授权就可以进入到MySQL命令行,使用SQL重置MySQ

Mysql密码找回及开启root远程登录

一.Linux下mysql密码恢复 1 2 3 4 5 6 service mysqld stop mysqld_safe --skip-grant-tables:ctrl+z暂停 #以安全模式启动mysql服务 mysql -u root -p #用root用户登陆(无密码登陆): mysql> use mysql; mysql> update user set password=password('新密码') where user='root'; mysql> flush privi

linux-Fedora 用户登录密码正确但无法登陆

问题描述 Fedora 用户登录密码正确但无法登陆 我使用的virtualbox虚拟机安装的Fedora20,但是用户登录时明明密码输入正确,但是提示无法奏效是怎么回事,Linux小白一个,刚准备用,请指教![CSDN移动问答][1]

Discuz!新版谍报安全篇:本地对登录密码加密 自定义后台登录文件名

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 细微之处见功夫,安全问题最重要的是细节上的留心,新版Discuz!在安全上也下足了功夫. 新版Discuz!采用独家研发的防陷落系统,经过数次优化.系统对管理后台权限进行了比较大的限制,管理后台所有数据亦严格过滤,并且对模板编辑.数据库导入等可能引起权限提升或者放置木马的操作进行了禁止.文件校验工具,帮助站长检查论坛程序文件,确保系统文件的完

linux中如何正确的修改MySQL密码

如果你是没有忘记密码修改mysql密码的方法有多,如下面的 UPDATE user 语句(回目录) 这种方式必须是先用root帐户登入mysql,然后执行: 1.如果您没有忘记密码的情况下,可以通过UPDATE直接编辑user表来修改密码:进入数据库  代码如下 复制代码 mysql -u rootmysql> use mysql; mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root'; mysql&

通过phpmyadmin修改MySQL密码与phpmyadmin无法登录解决方法

修改密码方法 一.通过浏览器登入phpmyadmin控制台,点击"权限", 二.勾选root用户,并单击后面的"编辑权限", 三.在打开的页面的中间位置,找到"更改密码"一栏,输入两次新密码,并单击"执行"按钮: 注意事项,修改密码之后再用phpmyadmin登录时会提示 在phpMyAdmin里修Mysql密码后,phpMyAdmin就不能登陆了,错误提示为: 迎使用 phpMyAdmin 2.9.0 Probably re