ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user'

ERROR: Access denied for user ‘root‘@‘localhost‘ (using password: NO)
    发现:
    mysql -u [email protected] -p 成功
    mysql -u root -p 失败
    mysql> SELECT user, host FROM mysql.user;
    ERROR 1142 (42000): SELECT command denied to user ‘‘@‘localhost‘ for table ‘user‘
    mysql> SELECT USER(), CURRENT_USER();
    +--------------------------+----------------+
    | USER()                   | CURRENT_USER() |
    +--------------------------+----------------+
    | [email protected]@localhost | @localhost     |
    +--------------------------+----------------+
    1 row in set (0.01 sec)

原因: root 设置了密码,需要把root的密码清掉。
    
    以下可以解决问题(方案一):
    1) service mysqld stop
    2) mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
    3) mysql -u root
    4) Setup new MySQL root user password
    use mysql;
    select user,host,password from mysql.user;
        +------+-----------+-------------------------------------------+
        | user | host      | password                                  |
        +------+-----------+-------------------------------------------+
        | root | localhost | *CF1E6A25C954B638A451D6|
        | root | centos64  |                                           |
        | root | 127.0.0.1 |                                           |
        |      | localhost |                                           |
        |      | centos64  |                                           |
        +------+-----------+-------------------------------------------+
    update mysql.user set password=PASSWORD("***********") where User=‘root‘;
    
    select user,host,password from mysql.user;
        +------+-----------+-------------------------------------------+
        | user | host      | password                                  |
        +------+-----------+-------------------------------------------+
        | root | localhost | *CF1E6A25C954B638A451D6 |
        | root | centos64  | *CF1E6A25C954B638A451D6|
        | root | 127.0.0.1 | *CF1E6A25C954B638A451D6|
        |      | localhost |                                           |
        |      | centos64  |                                           |
        +------+-----------+-------------------------------------------+
    flush privileges;
    quit

5) Stop MySQL Server: service mysqld stop

6) Start MySQL server and test it:
    service mysqld start
    mysql -u root -p
    SELECT USER(),CURRENT_USER();
        +----------------+----------------+
        | USER()         | CURRENT_USER() |
        +----------------+----------------+
        | [email protected] | [email protected] |
        +----------------+----------------+
        1 row in set (0.00 sec)    
        
    以下可以解决问题(方案二):
    先用方案一登录mysql,再把root的密码设置为空
    use mysql;
    update user set password=PASSWORD("****************") where User=‘root‘;
    flush privileges;
    quit

=========================

在授权的时候报错:
ERROR 1044 (42000): Access denied for user ‘root‘@‘%‘ to database ‘mdm‘

首先这里是用root用户操作,所以对这个数据库的权限绝对是最高级的,但是如果是非root用户操作,就可能是权限的问题,需要root用户授权。
     出现上面的报错,很可能,其实应该可以说基本上都是因为my.cnf 文件里面有skip-name-resolve参数,这个参数导致这不能解析hostname或其它方式的登录, 所以登录任何用户,匹配的时候不走[email protected]‘localhost‘,或者127.0.0.1或者::1 ,而是 一个劲的走[email protected]‘%‘.
再来查看一下每种方式下的root用户的具体权限:

mysql> select * from user\\G;

我这里root有三种解析登录方式分别是:Host: bidevedw\_db、Host: ::1、Host: %
一般情况还有Host:127.0.0.1、Host:localhost我的里面把哪两种删了。
请注意 !
 注意上面每条记录的的红色字体部分Grant_priv: Y
这个表示,以这种方式解析登录的root用户,是否有grant权限,Y则表示有授权限给其他用户的权限,N表示没有。
这里恰好,就是我们要找的原因,因为我的/my.cnf文件里面有skip-name-resolve参数,所以root都是解析到@‘%‘方式登录,于是就没有grant_priv权限。

解决方法:
1、在不重启MySQL服务的情况下,只需要在登录的时候加上-h参数
例如:(a). /usr/local/mysql/bin/mysql -uroot -p123456 -h::1
         (b)./usr/local/mysql/bin/mysql -uroot -p123456 -h127.0.0.1

(c)./usr/local/mysql/bin/mysql -uroot -p123456 -hlocalhost
2、需要重启MySQL。把skip-name-resolve参数去掉  ---- 还没验证。不过我记得,如果去掉了,日志里面会有大量的警告信息。我是因为那些警告信息,才添加的这个参数。

REF:

http://blog.itpub.net/27099995/viewspace-1362951/

ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user'

时间: 2024-10-20 00:02:04

ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user'的相关文章

[已解决]#1142 - SELECT command denied to user ''@'localhost' for table 'pma_table_uiprefs'

症状:在phpmyadmin那边打不开表,提示 #1142 - SELECT command denied to user ''@'localhost' for table 'pma_table_uiprefs' 解决: 1.在服务器登录mysql # ./mysql -uroot -p > source /path/to/phpmyadmin/examples/create_tables.sql; > GRANT SELECT, INSERT, UPDATE, DELETE ON phpmy

mysql SELECT command denied to user 'root'@'localhost' for table 'XXX' 报错1142

还是数据库权限的问题,不知道为啥赋给了所有权限后还是有各种权限问题,看来有空得整理一下mysql所有相关权限的问题了... 下面才是解决这个select权限的方法: mysql SELECT command denied to user 'root'@'localhost' for table 'XXX' 报错1142

转: MySQL5.7 ERROR 1142 (42000)问题

1,mysql全库导入报错 [[email protected]_121_21 ~]# mysql--socket=/usr/local/mysql/mysql.sock --default-character-set=utf8</home/alldb_20160605.sql ERROR 1142 (42000) at line 266079: SELECT,LOCK TABLES command denied to user 'root'@'localhost' for table 'acc

[phpmyadmin] phpmyadmin select command denied to user

phpmyadmin 在查看一个数据库中Table的数据的时候,会提示 select command denied to user 在Ubuntu下,我是使用重装Phpmyadmin的方式解决的 卸载phpmyadmin sudo apt-get remove phpmyadmin 安装phpmyadmin sudo apt-get install phpmyadmin 建立软链接(重装之前,/var/www 已经有phpmyadmin的软链接,可以不执行这段代码) sudo ln -s /us

MySQL:select command denied to user for table ‘proc‘案例

原文:MySQL:select command denied to user for table 'proc'案例 使用EMS MySQL Manager Pro(3.4.0.1)连接MySQL 5.6.20时,报错:"SELECT command denied to user xxx@xxx.xxx.xxx.xxx for table 'proc' 很是纳闷,后面使用同样的权限,发现使用命令工具mysql -h xxxx -u username -p连接时不会报错.个人猜测是因为EMS MyS

mysql客户端( Navicat)远程登录操作再遇问题 1142-create command denied to user&#215;&#215;&#215;

给用户添加CREATE,DROP权限. Mysql命令: GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON systest.* TO [email protected]'%' identified by 'root'; 然后再在navicat中操作,问题解决啦.

ERROR 1044 (42000): Access denied for user &#39;root&#39;@&#39;localhost&#39; to database &#39;mysql&#39;

mysql> use mysqlERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql'mysql> exitBye[[email protected] ~]# service mysqld stop Stopping mysqld:                                           [  OK  ][[email protected] ~]# mysql

ERROR 1044 (42000): Access denied for user &#39;&#39;@&#39;localhost&#39; to database &#39;ambari&#39;

配置Ambari远程maridb 报错: ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'ambari' 在环境搭建的过程中,在 #用Ambari用户(上面设置的用户)登录mysql ,(没有密码) mysql -u ambari -p use ambari: source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql 遇到了:

ERROR 1044 (42000): Access denied for user ‘root‘@‘localhost‘

从供应商那边接手一个MySQL数据库(数据库版本为5.7.21 MySQL Community Server (GPL)),在创建账号时遇到了"ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database xxx"错误,如下所示 mysql> grant all on xxx.* to [email protected]'192.168.%' identified by 'xxx'; ERROR