com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authent

Love The Way You Lie 2022-06-05 12:08 529阅读 0赞

使用guest用户远程连接RabbitMQ用户名密码错误

使用的是默认用户guest,密码也是guest

代码:

  1. package com.adtec.rabbitmq;
  2. import com.rabbitmq.client.Channel;
  3. import com.rabbitmq.client.Connection;
  4. import com.rabbitmq.client.ConnectionFactory;
  5. public class Send {
  6. private final static String QUEUE_NAME = "hello";
  7. public static void main(String[] argv) throws Exception {
  8. ConnectionFactory factory = new ConnectionFactory();
  9. factory.setHost("192.168.71.111");
  10. factory.setUsername("guest");
  11. factory.setPassword("guest");
  12. factory.setPort(5672);
  13. Connection connection = factory.newConnection();
  14. Channel channel = connection.createChannel();
  15. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  16. String message = "Hello World!";
  17. channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
  18. System.out.println(" [x] Sent '" + message + "'");
  19. channel.close();
  20. connection.close();
  21. }
  22. }

错误信息:

  1. [AMQP Connection 192.168.71.111:5672] WARN com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured (Exception message: Connection reset)
  2. Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.
  3. at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:342)
  4. at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62)
  5. at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:99)
  6. at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:900)
  7. at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:859)
  8. at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:817)
  9. at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:954)
  10. at com.adtec.rabbitmq.Send.main(Send.java:17)

我在Windows机器上也装了一个RabbitMQ,也用这个用户登录,结果是可以!!!

  1. package com.adtec.rabbitmq;
  2. import com.rabbitmq.client.Channel;
  3. import com.rabbitmq.client.Connection;
  4. import com.rabbitmq.client.ConnectionFactory;
  5. public class Send {
  6. private final static String QUEUE_NAME = "hello";
  7. public static void main(String[] argv) throws Exception {
  8. ConnectionFactory factory = new ConnectionFactory();
  9. factory.setHost("localhost");
  10. factory.setUsername("guest");
  11. factory.setPassword("guest");
  12. factory.setPort(5672);
  13. Connection connection = factory.newConnection();
  14. Channel channel = connection.createChannel();
  15. channel.queueDeclare(QUEUE_NAME, false, false, false, null);
  16. String message = "Hello World!";
  17. channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
  18. System.out.println(" [x] Sent '" + message + "'");
  19. channel.close();
  20. connection.close();
  21. }
  22. }

这里写图片描述

查了官网才知道

因为guest用户只是被容许从localhost访问。官网文档描述如下:

“guest” user can only connect via localhost

这里写图片描述

有兴趣的可以详细了解:http://www.rabbitmq.com/access-control.html

解决办法就是新建用户并授权

新建test用户,授予administrator权限

  1. rabbitmqctl add_user test root
  2. rabbitmqctl set_user_tags test administrator
  3. rabbitmqctl set_permissions -p / test ".*" ".*" ".*"

这里写图片描述

再连接:

这里写图片描述

好使了!!!

发表评论

表情:
评论列表 (有 0 条评论,529人围观)

还没有评论,来说两句吧...

相关阅读