>

竭泽而渔MySQL密码准确却无法本地登入,MySQL密码

- 编辑:www.bifa688.com -

竭泽而渔MySQL密码准确却无法本地登入,MySQL密码

  第一种是因为root账户初始的时候有3条记录,包含root对应localhost,hostname,127.0.0.1三条账户数据,我们可以update host为其他两项中一项为localhost即可。

 代码如下

mysql登录报错ERROR1045(28000)

1、现象:
[[email protected] ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

2、原因:数据库中存在空用户所致

3、解决方案:
1)停用mysql服务:# service mysql stop
2)输入命令:# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
3)登入数据库:# mysql -u root mysql
4)mysql> use mysql;
5)mysql> select user,host,password from user; 结果如下:
------ ----------------------- ----------
| user | host | password |
------ ----------------------- ----------
| root | % | mima |
| root | localhost.localdomain | mima |
| root | 127.0.0.1 | mima |
| | localhost | |
| | localhost.localdomain | |
------ ----------------------- ----------
6)将上面查询出来的空用户删除:mysql> delete from user where user='';
7)退出数据库:mysql> quit
8)启动mysql服务:# service mysql start

9)重新用命令‘mysql -u root -p’登录,OK!

或者:

1)找到mysql的配置文件,修改my.cnf,在其中加入skip-grant-tables

2)重启数据库service mysql restart

3)免密码使用root登录,然后查看user表、删除空用户

4)推出数据库,修改my.cnf,去掉skip-grant-tables

5)重启数据库

) 1、现象: [[email protected] ~]# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user [email protected] (using password: YES)...

  总结一点就是root账户缺失了访问localhost主机的账户信息,导致无法本地登录。

第二种是直接insert一条记录,host为localhost即可

  在本地用mysql命令直接回车可以进入mysql,但是里面只有test和information_schema数据库,没有mysql等数据库,使用use mysql报如下错:

这里记录一下今天遇到的纠结事情:

代码如下

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)

  OK,退出mysql,重启mysql就解决问题了

复制代码

  使用root用户通过主机127.0.0.1登录就可以正常进入mysql,127.0.0.1和localhost对mysql数据库来讲是不同的主机,

复制代码

mysql> update user set host='localhost' where user='root' and host='%';
mysql> flush privileges;

总结一点就是root账户缺失了访问localhost主机的账户信息,导致无法本地登录。

  这里后来经高人指点才发现mysql库中的user表缺少一个root指向host:localhost的数据项,只有一个root指向host:主机名的数据项,故怎么也无法利用root账户登录MySQL。

1045 (28000): Access denied for user 'root'@'localhost' (using password: YES),这个提示是密码不正确哦,但密码是...

代码如下

1 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

  密码正确的情况下,mysql数据库已经禁止了root用户在本地的登录权限了。

发现user表host字段中没有localhost,但是我的理解是%代表所有的主机都能登录的,为什么localhost不能呢,同样的情况我在5.0.45版的mysql上面做实验就不会发生localhost无法登录,我当前用的是5.1.57版的,难道是版本的问题?

  首先kill掉MySQL进程然后在启动mysql的参数中加入

我们要进mysql看user表,一种方法可以通过上面的命令,如果不行,可以用下面的命令启动数据库,缺省密码进入

root密码正确,却怎么也无法从本地登录MySQL,提示 1 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 这里后来经高人指...

使用root用户通过主机127.0.0.1登录就可以正常进入mysql,127.0.0.1和localhost对mysql数据库来讲是不同的主机,
[[email protected] ~]# mysql -uroot -p123456 -h 127.0.0.1
这让我想起了mysql下的user表。

  意思是说没有指定user,没有权限访问数据库mysql。

mysql> update user set host='localhost' where user='root' and host='%';
mysql> flush privileges;

  ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

接下来的修改很明显了:

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)

这里有两种解决方案:

  总结一下:即使root的host包含了主机名,127.0.0.1那么依然是无法正常登录的,这里必须要有localhost的host才行。

[[email protected] ~]# /etc/init.d/mysql stop
[[email protected] ~]# /usr/local/mysql/bin/mysqld_safe –skip-grant-tables &
[[email protected] ~]# 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.

  那有什么办法恢复root登录呢?

总结一下:即使root的host包含了主机名,127.0.0.1那么依然是无法正常登录的,这里必须要有localhost的host才行。

[[email protected] ~]# /etc/init.d/mysql stop
[[email protected] ~]# /usr/local/mysql/bin/mysqld_safe –skip-grant-tables &
[[email protected] ~]# 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命令直接回车可以进入mysql,但是里面只有test和information_schema数据库,没有mysql等数据库,使用use mysql报如下错:
mysql> use mysql
ERROR 1044 (42000): Access denied for user "@'localhost' to database 'mysql'
意思是说没有指定user,没有权限访问数据库mysql。

  如果上面办法还是无法正常登录我们可尝试另一种办法

 --skip-grant-tables

  mysql> use mysql

如果上面办法还是无法正常登录我们可尝试另一种办法

 

首先kill掉MySQL进程然后在启动mysql的参数中加入

  这里记录一下今天遇到的纠结事情:

OK,退出mysql,重启mysql就解决问题了

  这让我想起了mysql下的user表。

会发现这时无密码就可以登录mysql了。

  这里有两种解决方案:

这里后来经高人指点才发现mysql库中的user表缺少一个root指向host:localhost的数据项,只有一个root指向host:主机名的数据项,故怎么也无法利用root账户登录MySQL。

  [[email protected] ~]# mysql -uroot -p123456 -h 127.0.0.1

MySQL root密码正确,却怎么也无法从本地登录MySQL,提示

 

那么用root登录呢,输入正确的密码报如下错:
[[email protected] ~]# mysql -uroot -p123456
ERROR 1045 (28000): Access denied for user
'root'@'localhost' (using password: YES) 密码正确的情况下,mysql数据库已经禁止了root用户在本地的登录权限了。

  ERROR 1044 (42000): Access denied for user "@'localhost' to database 'mysql'

今天在使用phpmyadmin连接数据库时提示ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES),这个提示是密码不正确哦,但密码是没有问题的。

  --skip-grant-tables

第一种是因为root账户初始的时候有3条记录,包含root对应localhost,hostname,127.0.0.1三条账户数据,我们可以update host为其他两项中一项为localhost即可。

  1 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

当然我们还必须修复root账户丢失的数据项。

  我们要进mysql看user表,一种方法可以通过上面的命令,如果不行,可以用下面的命令启动数据库,缺省密码进入

那有什么办法恢复root登录呢?

  那么用root登录呢,输入正确的密码报如下错:

 代码如下

   MySQL root密码正确,却怎么也无法从本地登录MySQL,提示

  第二种是直接insert一条记录,host为localhost即可

  会发现这时无密码就可以登录mysql了。

  当然我们还必须修复root账户丢失的数据项。

  发现user表host字段中没有localhost,但是我的理解是%代表所有的主机都能登录的,为什么localhost不能呢,同样的情况我在5.0.45版的mysql上面做实验就不会发生localhost无法登录,我当前用的是5.1.57版的,难道是版本的问题?

  接下来的修改很明显了:

  [[email protected] ~]# mysql -uroot -p123456

本文由88bifa必发唯一官网发布,转载请注明来源:竭泽而渔MySQL密码准确却无法本地登入,MySQL密码