Chinaunix

标题: grant报错,说密码错但是已经用密码登录,尝试mysqld_safe --skip-grant-tables无效 [打印本页]

作者: aaa1111sss    时间: 2013-04-26 11:08
标题: grant报错,说密码错但是已经用密码登录,尝试mysqld_safe --skip-grant-tables无效
申明:比较捉急,此问题已在myslq版块发过帖子,暂无回应,因比较捉急,在这里也发一下







环境:

mysql -V
mysql  Ver 14.14 Distrib 5.1.62, for pc-linux-gnu (i686) using readline 5.1

uname -r
2.6.18-308.el5

lsb_release -a
LSB Version:    :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 5.8 (Final)
Release:        5.8
Codename:       Final


建立数据库,多实例,方式是每个实例一个单独的配置文件


已经给root用户赋予数据库密码,并可以用该密码登录数据库


进入后,用GRANT 授权从库

mysql> GRANT replication slave on *.*  to 'rep'@'192.168.88.%' identified by '123456abc';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

就停止数据库  /data/3306/mysql stop     并查看进程,的确停止了


用mysqld_safe   --skip-grant-tables  --skip-networking  的方式进入数据库,重新给root用户赋予密码,并

FLUSH  RPIVILEGES;

quit;

再重启数据库,用密码可以进入数据库


可以有权限使用所有的库,但是grant再次报错


GRANT replication slave on *.*  to 'rep'@'192.168.88.%' identified by '123456abc';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


尝试给root授予所有权限

GRANT ALL *.*  to 'root'@'localhost';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

原因?已经登入数据库了,并有权限使用所有的库了(尝试use 各个库,均可以)


是否有什么权限错误,把权限表详情放在下面,大家帮忙看看:

个人初步确定问题可能在下面,User有空用户,但是尝试 delete from user where user is NULL or user=''; 并FLUSH  PRIVIEGES;问题还是如上所述

mysql> select Host,User,Grant_priv from db;
+-----------+-----------+------------+
| Host      | User      | Grant_priv |
+-----------+-----------+------------+
| %         |           | N          |
| %         |           | N          |
| localhost | wordpress | N          |
+-----------+-----------+------------+
3 rows in set (0.00 sec)


mysql> select Host,Grant_priv from host;
Empty set (0.00 sec)


mysql> select  User,Grantor from procs_priv;
Empty set (0.00 sec)

mysql> select User,Host,Grant_priv from user;
+-----------+-----------+------------+
| User      | Host      | Grant_priv |
+-----------+-----------+------------+
| root      | localhost | N          |
| root      | 127.0.0.1 | Y          |
| rep       |           | N          |
| wordpress | localhost | N          |
+-----------+-----------+------------+
4 rows in set (0.00 sec)


这个地方是不是有问题?看起来,root@localhost没有grant权限,怎么解决?

mysql> select User,Host,Grant_priv from user;
+-----------+-----------+------------+
| User      | Host      | Grant_priv |
+-----------+-----------+------------+
| root      | localhost | N          |
| root      | 127.0.0.1 | Y          |
| rep       |           | N          |
| wordpress | localhost | N          |
+-----------+-----------+------------+
4 rows in set (0.00 sec)


mysql> select GRANTEE,PRIVILEGE_TYPE,IS_GRANTABLE from COLUMN_PRIVILEGES;
Empty set (0.00 sec)


而且,类似的密码问题反复出现,比如,已经设置好密码,再次登录,总是报错,总是需要停库,再mysqld_safe  --skip-grant-table --skip-networking的方式重新启动,再重设密码,有时候还要删除空用户,才能登录到数据库


重要信息:

在此次报错之前,曾成功GRANT  ALL给root@localhost

可是这次,来给从库授权总是报错,再次尝试给root授权也把错如上述


如何解决?大家帮帮忙看看
作者: zongg    时间: 2013-04-26 16:47
bind-address ??
允许域名解析的时候 localhost=127.0.0.1,禁止域名解析之后localhost与127.0.0.1并不是同一个主机。
所以在禁止域名解析之后,需要重新设置用户权限,不能再使用 localhost ,使用 % 任意主机或者IP地址如127.0.0.1 。
作者: aaa1111sss    时间: 2013-04-27 22:12
域名解析没问题  


谢谢回答  不过思路是正确的  权限表有问题  

详见这个帖子  http://bbs.chinaunix.net/thread-4078573-1-1.html  

我当时比较捉急  两个版都发了帖子  上面的帖子已解决






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2