解决MySQL密码正确却无法本地登录
发布:smiling 来源: PHP粉丝网 添加日期:2014-10-03 22:23:58 浏览: 评论:0
今天在使用phpmyadmin连接数据库时提示ERROR 1045(28000):Access denied for user \'root\'@\'localhost\'(using password: YES),这个提示是密码不正确,但密码是没有问题的.
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账户缺失了访问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 | --phpfensi.com
- +——+——————-+——————————————-+
- | 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就解决问题了.
Tags: MySQL密码 MySQL无法本地登录
相关文章
- ·Windows下MySQL root用户忘记密码重置方法(2014-09-23)
- ·忘记了mysql密码,在服务器修改mysql密码(2014-09-23)
- ·WampServer修改Mysql密码的步骤(2014-09-25)
- ·mysql关闭skip-grant-tables快速重置mysql密码(2014-09-27)
- ·mysql旧密码错误 Error: 2049 (CR_SECURE_AUTH)(2014-09-28)
- ·mysql的root密码丢失重置之ERROR 1045 (28000)(2014-09-29)
- ·windows忘记mysql密码找回方法(2014-10-01)
- ·linux下mysql忘记root密码(2014-10-02)
- ·破解mysql root密码的几种方法(2014-10-03)
- ·Linux中修改MySQL ROOT密码方法(2014-10-08)
- ·MySQL数据库修改root密码方法介绍(2014-10-08)
- ·linux中如何正确的修改MySQL密码(2014-10-08)
- ·Windows2003中mysql的root密码忘记(2014-10-09)
- ·windows中忘记mysql root密码怎么恢复(2014-10-09)
- ·怎么用命令行修改MySQL数据库密码(2014-10-10)
- ·忘记root密码终极修改MySql密码方法(2014-10-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)