远程连接mysql失败异常,未配置权限,skip-name-resolve以及防火墙

2023-11-04

刚安装好 mysql之后,用 navicat 连接MySQL ,是连不上的。mysql 默认是只能本地连接,如果需要远程连接,需要配置连接权限。我的mysql 版本是 MySQL 5.6.40
本地连接之后,需要重置密码

set password for user@localhost = password('123456');

查看权限

首先登录到mysql ,mysql -u root -p, 输入密码登录进去

mysql > show grants;

在这里插入图片描述

这是root 用户对localhost的权限,如果需要远程登录,查看远程权限

mysql> show grants for 'root'@'%'

这里%表示任意主机。如果没有配置过,会有提示。

配置可远程登录

mysql> GRANT ALL PRIVILEGES ON *.*  TO 'root'@'%' IDENTIFIED  BY '密码';
mysql> flush privileges;  

ALL PRIVILEGES 表示所有权限, 其实mysql中权限有许多,增删改查是最基本的,还分库权限,表权限,全局权限等
ON . 表示对所有数据库的所有表都给与权限,例如你只想给某个用户test数据库的权限,那么可以写 ON test.* , 当然权限可以细分到表,甚至细分到列都是OK的!
TO 后面接的是用户名,对谁授予权限。 TO ‘root’@’%’ , %表示任意主机,这就是说对从任意主机使用指定密码登录的root用户授予 ALL PRIVILEGES 权限。
详细的grant 语法请参考https://dev.mysql.com/doc/refman/5.6/en/grant.html#grant-overview
授予权限之后,查看一下

mysql> show grants for 'root'@'%';

在这里插入图片描述
ok ! 权限配置已完成

再登录,报错Lost connection to MySQL server at 'waiting for initial communication packet

登录,又报错了。
原因分析:
mysql开启了DNS的反向解析功能,这样mysql对连接的客户端会进行DNS主机名查找。
mysql处理客户端解析过程:
1)当mysql的client连过来的时候,服务器会主动去查client的域名。
2)首先查找 /etc/hosts 文件,搜索域名和IP的对应关系。
3)如果hosts文件没有,则查找DNS设置,进行DNS反向解析,直到timeout连接失败。

mysql的DNS反向解析:
1)mysql接收到连接请求后,获得的是客户端的ip,为了更好的匹配mysql.user里的权限记录(某些是用hostname定义的)。
2)如果mysql服务器设置了dns服务器,并且客户端ip在dns上并没有相应的hostname,那么这个过程很慢,导致连接等待。
解决方案:
1)把client的ip写在mysql服务器的/etc/hosts文件里,随便给个名字做主机映射即可。
2)在my.cnf配置文件中的[mysqld]区域添加skip-name-resolve,即跳过mysql连接的DNS反向解析功能,这样能很好地提高mysql性能。在这种情况下,就只能使用MySQL授权表中的IP来连接mysql服务了。

对于第一种方法显然比较笨,也不实用!强烈推荐第二种方法,添加skip-name-resolve选项可以禁用dns解析,这样的话,就不能在mysql的授权表中使用主机名了,只能使用IP。

[mysqld]
skip-name-resolve

重启mysql。
设置完最好验证一下

mysql>show variables like '%skip_name_resolve%'; 

在这里插入图片描述
已开启,OK!
另外:
如果在my.cnf文件中配置了bind-address地址绑定的地址(说明别的机器远程只能通过这个绑定的本机地址来连接mysql),可以将其注释掉。
例如:
bind-address = 127.0.0.1 //说明只能在本机连接mysql,并且通过-h 127.0.0.1或localhost,在远程是无法连接这个mysql的!

my.cnf配置的几个参数:
skip-name-resolve 跳过DNS反向解析过程.(这样就不能使用主机名连接mysql了,只能使用ip连接)
skip-grant-tables 跳过授权表(当mysql登陆密码忘记时的解决办法)
skip-networking 跳过TCP/IP连接
skip-host-cache 禁用主机名缓存;要想清除主机名缓存,执行FLUSH HOSTS语句或执行mysqladmin flush-hosts命令

再次连接,还是报错,还是上面的错误

我还是太年轻,这又咋啦。上一步明明已经忽略了dns解析,
忽然想到会不会是防火墙的问题,看下防火墙服务是否开启

# service iptables status

在这里插入图片描述
防火墙开着,把防火墙关掉试试

service iptables stop

再重新连,successful ! 果真是防火墙惹的祸。
那把防火墙关掉?感觉不太安全! 好吧,在防火墙规则里加入允许 3306 端口通过
打开 /etc/sysconfig/iptables文件,在8080后面加一行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

注意这个位置,一般在8080后面一行,或者22那一行后面。不能直接加在文件末尾,
在这里插入图片描述
重启防火墙!service iptables start
重连mysql, 可以连上了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

远程连接mysql失败异常,未配置权限,skip-name-resolve以及防火墙 的相关文章

  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • MySQL 排序顺序 - 排序规则?

    我在对 MySQL 中的 char 字段进行排序时遇到困难 问题是重音字符与非重音字符混淆 例如 Abc bd Acc 我认为这可能与整理有关 所以我将表格的排序规则更改为utf8 ut8 bin 看完之后这个帖子 https stacko
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • 如何在 SEQUELIZE (nodeJS) 中创建触发器?

    我正在尝试使用sequelize 创建一个触发器 主要思想是创建一个实例CONFIG创建后USER USER MODEL module exports function sequelize DataTypes var User sequel
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道
  • linux下如何从文本文件中获取值

    我有一些文本格式的文件 xxx conf 我在这个文件中有一些文本 disablelog 1 当我使用 grep r disablelog oscam conf 输出是 disablelog 1 但我只需要值1 请问你有什么想法吗 一种方法
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • Mysql插入表后不显示右单引号(’)

    我有一个名为 测试 的表 我插入了一行 其中包含unicode字符右单引号 0x2019在名称字段中 SQL insert into Testing values Sno Name Address insert into Testing v
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序

随机推荐

  • 前端如何使用微信支付

    一 h5页面支付 h5页面接入微信支付分为两种情况 一种微信内置浏览器调用支付 另一种是在外置浏览器调用支付 内置浏览器支付 内置浏览器支付使用JSAPI支付 前端调用代码 wx chooseWXPay timestamp 0 支付签名时间
  • MySQL 服务器进程 mysqld的组成

    有连接层 SQL 层 存储层组成 连接层 为每个连接维护一个线程 进行身份验证 处理查询执行 SQL 层 包括了解析 授权分析 优化 执行 查询日志记录 存储层 管理表数据 常见的存储引擎有 InnoDB MyISAM MEMORY 和 N
  • python爬虫接口_爬虫与API(上)

    本系列两篇文章讲API的概念 以及它在爬虫中的使用 分为如下部分 API概念 库的API 数据API Github API httpbin 其他API 由于篇幅限制 本文只展示API概念 库的API 数据API API概念 API Appl
  • 程序员必知的23种设计模式之策略模式

    文章目录 1 模式引入 鸭子项目 2 传统方案解决鸭子问题 3 传统方式解决鸭子问题分析和解决方案 4 策略模式基本介绍 4 1 策略模式的原理类图 4 2 说明 5 策略模式解决鸭子问题 6 策略模式的注意事项和细节 1 模式引入 鸭子项
  • 比较两个版本字符串version1和version2

    时间限制 1秒 空间限制 32768K 如果version1 gt version2 返回1 如果 version1 lt version2 返回 1 不然返回0 输入的version字符串非空 只包含数字和字符 字符不代表通常意义上的小数
  • 23.7.14——23.7.16周末作业

    思维导图 2 有1 2 3 4个数字 能组成多少互不相同且无重复的三位 都是多少 3 终端输入一个数 输出他的二进制 二进制输出不可用格式符 4 定义一个一维整型数组 使用for循环实现数组中元素的输入输出 5 终端输入两个数 求这两个数的
  • windows下PL/SQL Developer连接Orcale

    2 使用PL SQL Developer连接Orcale 这是第三方开发的工具 用于编写PL SQL 代码 调试 查看执行计划等等功能 比较方便 但是是付费软件 Oracle 没有收购这家公司 大家只能用低版本的绿色版 性能有很大的问题 而
  • JavaScript数据结构之队列

    class Queue constructor this count 0 this list this lowestCount 0 往队列添加元素 enqueue element this list this count element t
  • 补充:tensor之间进行矩阵相乘的方法总结

    利用 进行简单的矩阵乘 符号在tensor中就表示矩阵相乘 符号的矩阵相乘性质在numpy中依然适用 首先矩阵相乘的双方必须满足可以矩阵相乘的条件 只会关注两个矩阵最里面的两个维度是否符合条件 外面的维度都只表示矩阵运算的次数 甚至两个矩阵
  • PAT (Basic Level) Practice 1018 锤子剪刀布

    大家应该都会玩 锤子剪刀布 的游戏 两人同时给出手势 胜负规则如图所示 现给出两人的交锋记录 请统计双方的胜 平 负次数 并且给出双方分别出什么手势的胜算最大 输入格式 输入第 1 行给出正整数 N 10 5 即双方交锋的次数 随后 N 行
  • 解决appium-inspector连接后在Appium中报错:No route found for /sessions

    完整报错 Appium inspector 连接点击start session后在Appium中报错 HTTP lt GET sessions 404 6 ms 211 HTTP HTTP gt GET sessions HTTP HTTP
  • 判断用户是否已关注公众号

    背景 业务场景是 判断当前登录用户是否已经关注指定的官方微信公众号 没有就指引用户关注 微信公众号官方文档 https developers weixin qq com doc offiaccount Getting Started Ove
  • CocosCreator中TiledMap在真机无法读取, 浏览器和模拟器正常

    找到CocosCreator的安装路径 我这边是CocosCreator191 resources static build templates wx libs xmldom 打开dom js文件 找到第127行 将 copy ls lis
  • Ubuntu 通过 ssh 传输文件

    因为在 ubuntu 中 微信和qq不方便安装 为了便于不同电脑之间传输文件 便通过ssh 文章目录 ssh 客户端和服务端安装 简单使用 scp文件传输 免密传输 WindTerm ssh 客户端和服务端安装 安装 ssh 服务端 sud
  • 低功耗基础概念——Level Shifter cell补充

    文章目录 为什么现在的IC中高低电压差别不大 仍然需要LS level shifter H2L Level shifer L2H Level shifer Lib文件中对level shifter的描述 信号跨越不同级别电压模块进行驱动时
  • 【论文阅读】A CNN-Transformer Hybrid Approach for CropClassification Using MultitemporalMultisensor Images

    论文题目 利用多时相多传感器图像进行作物分类的CNN Transformer混合方法 目录 摘要 I INTRODUCTION II RELATE WORK A Ground Truth of Crop Types B Preprocess
  • QtWebApp介绍、下载和搭建http轻量级服务器Demo

    一 QtWebApp介绍 QtWepApp是一个C 中的HTTP服务器库 其灵感来自Java Servlet 适用于Linux Windows Mac OS和Qt Framework支持的许多其他操作系统 QtWebApp包含以下组件 HT
  • CTFshow-菜狗杯WP

    经过了48小时的奋战 在这次比赛中成功拿下4400分 同时也发现了自己的许多不足 MISC 杂项签到 下载附件后进行解压 发现是一张图片 通过二进制查看工具 WinHex 010 Editor 打开该图片 Ctrl F搜索文本 ctfsho
  • [Leetcode]回文数(python版)

    判断一个整数是否是回文数 回文数是指正序 从左向右 和倒序 从右向左 读都是一样的整数 示例1 输入 121 输出 true 示例2 输入 121 输出 false 解释 从左向右读 为 121 从右向左读 为 121 因此它不是一个回文数
  • 远程连接mysql失败异常,未配置权限,skip-name-resolve以及防火墙

    刚安装好 mysql之后 用 navicat 连接MySQL 是连不上的 mysql 默认是只能本地连接 如果需要远程连接 需要配置连接权限 我的mysql 版本是 MySQL 5 6 40 本地连接之后 需要重置密码 set passwo