• 连接mysql报错 :Host ‘xxx.xx.x.x‘ is not allowed to connect to this MySQL server


    排查思路

    1. 命令行连接mysql
      我是安装在本地docker容器中的,可以使用一下命令直接连接

      docker exec -it mysqldb  mysql -u root -p
      
      • 1

      其中mysqldb是我的mysql容器名字,后面跟随mysql的连接命令,然后输入密码即可。 如果没有设置过密码,那么直接把-p去掉即可。

    2. 在 MySQL 中,执行以下命令以查看当前的用户和主机权限:

      mysql> SELECT user, host FROM mysql.user;
      +------------------+-----------+
      | user             | host      |
      +------------------+-----------+
      | root             | %         |
      | mysql.infoschema | localhost |
      | mysql.session    | localhost |
      | mysql.sys        | localhost |
      | root             | localhost |
      +------------------+-----------+
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

      我用的是root用户,可以看到有一个配置只允许localhost连接,另一个%代表允许所有ip连接。
      实际测试下来,‘localhost’ 的优先级比’%'高,这就是出现禁止连接的问题原因

    解决方案

    使用下面的命令将root用户的host字段改为"%‘’

    update mysql.user set host = '%' where user = 'root';
    
    • 1

    重新查看

    mysql> SELECT user, host FROM mysql.user;
    +---------------+-----------+
    | user          | host      |
    +---------------+-----------+
    | root          | %         |
    | mysql.session | localhost |
    | mysql.sys     | localhost |
    +---------------+-----------+
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    可以看到,root用户就只有一个带%的了。

    最后使用下面的命令刷新权限

    FLUSH PRIVILEGES;
    
    • 1

    重新使用可视化工具连接mysql,问题解决了。

    备注

    当创建新用户时,可以直接允许所有ip连接,后面就不会那么麻烦了。

    CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
    GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
    • 1
    • 2
    • 3
  • 相关阅读:
    学术英语写作(更新中)
    MySQL 中读写分离数据延迟
    JDBC概述
    备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口
    抖音 获取商品详情 API
    jupyter 基本用法
    C primer plus学习笔记 —— 5、指针
    MATLAB图像批处理之图格式批量转换
    pytorch 1.6.0源码编译问题
    公众号如何让更多人看到?这三种方法超有效!
  • 原文地址:https://blog.csdn.net/dorlolo/article/details/133849592