禁止mysql做域名解析(解决远程访问mysql时很慢)_Mysql

当远程访问mysql时,mysql会解析域名,会导致访问速度很慢,加上下面这个配置可解决此问题

禁止mysql做域名解析
[mysqld]

skip-name-resolve

PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句。

但是,这样会引起一个问题:连接mysql时,不能使用 localhost连接了,而是要使用IP地址的;如果是按localhost对用户赋权限的话,用户登录权限也要修改一下的。

连接mysql速度慢的解决方法.

2台服务器,一台跑iis+php,一台跑mysql,和以往一样配置好环境,测试页面一切OK

跑应用的时候发现php访问mysql速度很慢,这种情况在以前从未发现过,虽然2台服务器并非在同一网段中,但是ping数值基本上都在1,2ms之间,tcp连接应该不是问题关健,google以后找到答案,在my.ini文件的[mysqld]部分加入:skip-name-resolve,保存文件,重启mysql,一切OK啦,速度象飞一样了

新版本的mysql配置起来不象以前的那个傻瓜化了,这个问题折腾了我一上午的时间,晚上回来总算是解决了,嘿嘿,又学到一些东西。

Windows 2003下的MySQL 5服务器,本机连接到MySQL服务非常快,局域网内有两台Linux机器,有一台连接很快,另外一台输入密码后要等好几秒钟才能连上。

解决办法:

在MySQL服务器的配置中增加一个如下配置后速度飞快。

[mysqld]
skip-name-resolve

附录:( How MySQL uses DNS )

When a new thread connects to mysqld, mysqld will spawn a new thread to handle the request. This thread will first check if the hostname is in the hostname cache. If not the thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname.

If the operating system doesn't support the above thread-safe calls, the thread will lock a mutex and call gethostbyaddr() and gethostbyname() instead. Note that in this case no other thread can resolve other hostnames that is not in the hostname cache until the first thread is ready.

You can disable DNS host lookup by starting mysqld with --skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.

If you have a very slow DNS and many hosts, you can get more performance by either disabling DNS lookop with --skip-name-resolve or by increasing the HOST_CACHE_SIZE define (default: 128) and recompile mysqld.

You can disable the hostname cache with --skip-host-cache. You can clear the hostname cache with FLUSH HOSTS or mysqladmin flush-hosts.

If you don't want to allow connections over TCP/IP, you can do this by starting mysqld with --skip-networking.

PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句。

MYSQL远程连接速度慢的解决方法
在局域网内连接其他机器的MYSQL,发现速度慢的很,不知道什么原因,总有几秒的延迟.

后来在网上发现解决方法,my.ini里面添加

复制代码 代码如下:

[mysqld]
skip-name-resolve
skip-grant-tables

这样速度就快了!

skip-name-resolve

选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。

若使用–skip-grant-tables系统将对任何用户的访问不做任何访问控制,但可以用 mysqladmin flush-privileges或mysqladmin reload来开启访问控制;默认情况是show databases语句对所有用户开放,

如果mysql服务器没有开远程帐户,就在my.ini里面加上skip-grant-tables

时间: 2024-10-23 00:50:39

禁止mysql做域名解析(解决远程访问mysql时很慢)_Mysql的相关文章

解决MySQL中的Slave延迟问题的基本教程_Mysql

一.原因分析一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制线程只有一个sql thread用于binlog的apply,所以难怪slave在高并发时会远落后master. ORACLE MySQL 5.6版本开始支持多线程复制,配置选项 slave_parallel_workers 即可实现在slave上多线程并发复制.不过,它只能支持一个实例

MySQL启动错误解决方法_Mysql

一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况.拿到一台服务器,安装完mysql后进行启动,启动错误如下: 有同学会说,哥们儿你是不是buffer pool设置太大了,设置了96G内存.这明显提示无法分配内存嘛.如果真是这样也就不在这里进行分享了,哈哈. 我的服务器内存是128G.如下图: 服务器内存使用情况: 那么问题来了,既然还剩如此多的内存,为什么提示无法分配内存??.各位童鞋怎么看? 1. 首先想到会不会是有几条内存坏了?于是运维的同学进行了检查,给我

MySQL启动错误怎么解决 MySQL启动错误解决方法

一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况.拿到一台服务器,安装完mysql后进行启动,启动错误如下. 有同学会说,哥们儿你是不是buffer pool设置太大了,设置了96G内存.这明显提示无法分配内存嘛.如果真是这样也就不在这里进行分享了,哈哈. 我的服务器内存是128G.如下图: 服务器内存使用情况: 那么问题来了,既然还剩如此多的内存,为什么提示无法分配内存? 1. 首先想到会不会是有几条内存坏了?于是运维的同学进行了检查,给我的反馈是硬件一切正常

MySQL 1594错误解决方法

MySQL 1594错误解决方法 MySQL 1594错误解决方法: 例:  www.bitsCN.com Master_Log_File: mysqld-bin.000042 Read_Master_Log_Pos: 99749808 Relay_Log_File: mysqld-relay-bin.000083 Relay_Log_Pos: 15995 Relay_Master_Log_File: mysqld-bin.000041 Slave_IO_Running: Yes Slave_S

解决mySQL中1862(phpmyadmin)/1820(mysql)错误的方法_Mysql

发现问题 之前一直运行的好好的,突然mysql就无法工作了.请求命令后报错误:ERROR 1820 (HY000): You must SET PASSWORD before executing this statement ,使用phpMyAdmin管理工具也无法登录,显示错误:#1862 无法登录 MySQL 服务器 错误解决 进入mysql的服务器中使用mysql指令进行登录及操作. 1.登录mysql:mysql -uroot -proot (root是我的帐号及密码) 2.尝试是否报1

mysql不能启动报error2013错误的多种解决方案_Mysql

Mysql mysql lost connection to server during query 问题解决方法 缘由: 在查询Mysql中的数据库,或者修改比较大的表的时候就会出现这种情况: google之: 方案1.在mysql配置文件[myslqd]下面添加一行设置skip-name-resolve.需要重启mysql服务. 方案2.在hosts文件内添加: ip与主机名的映射关系,如: 127.0.0.1 localhost. 这种方式不用重启mysql服务. ------------

解决MySQL不允许从远程访问的方法

解决MySQL不允许从远程访问的方法 解决方法: 1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" mysql -u root -pvmwaremysql>use mysql; mysql>update

用mysql做站点时怎样记录未知错误的发生

当使用MySQL做站点的时候,肯定会有不知道的错误发生,怎么记录呢?以下是具体解决方法: class.method //建立错误日志 function error(){ +"); $time=date("Y-m-d H:i:s"); $msg="{VisitedTime:$time}\t {VisiterIP:$_SERVER[REMOTE_ADDR]}\t {Errormsg:".MySQL_error()."}\t {File:->$_

大小写-EF和mysql做关系映射,表名全部小写了,怎么解决?

问题描述 EF和mysql做关系映射,表名全部小写了,怎么解决? 我的项目已经用EF映射过一次mysql 了,表名和数据库名称大小写是一致的. 然后我现在"从数据库更新模型",发现映射过来的表名全部小写了.不知道怎么回事? 求大神赐教!