MySQL遠端訪問時,非常慢,甚至出現連不上的情況
MySQL遠端訪問時,非常慢,甚至出現連不上的情況
許可權已賦,防火牆等已關閉
解決方法,my.cnf裡面新增
[mysqld]
skip-name-resolve
skip-name-resolve
選項就能禁用DNS解析,連線速度會快很多。不過,這樣的話就不能在MySQL的授權表中使用主機名了而只能用ip格式。
還有許可權的問題,當使用者設定限制只能訪問某個資料庫,如果這個資料庫被刪了,再重建這個指定資料庫,限制使用者還是不能訪問這個資料,大概是刪除資料庫的時間,把該使用者的訪問許可權也級聯刪除了,詳細可以檢視mysql.db的記錄
若使用–skip-grant-tables系統將對任何使用者的訪問不做任何訪問控制,但可以用 mysqladmin flush-privileges或mysqladmin reload來開啟訪問控制;預設情況是show databases語句對所有使用者開放,
如果mysql伺服器沒有開遠端帳戶,就在my.cnf裡面加上skip-grant-tables
實在不行:直接關閉系統的dns服務chkconfig name off
排除網路問題........
就MySQL本身而言,問題出在在mysql dns反解析
mysql>show processlist;
| 20681949 | unauthenticated user | 10.10.4.193:52497 | NULL | Connect | | Reading from net | NULL |
| 20681948 | unauthenticated user | 10.10.4.193:52495 | NULL | Connect | | Reading from net | NULL
發現有非常多的 unauthenticated user 嘗試做登入使用 mysql 的情況 ,當這種情況無限制發生時就會造成系統十分緩慢。
查閱mysql官方網站得知,這屬於官方一個系統上的特殊設定,就把他當成mysql的一個bug算了
不管連結的的方式是經過 hosts 或是 IP 的模式,他都會對 DNS 做反查
mysqld 會嘗試去反查 IP -> dns ,由於反查解析過慢,就會無法應付過量的查詢。
解決辦法:
/usr/local/mysql/bin/mysqld_safe --skip-name-resolve --user=mysql&
加 --skip-name-resolve 這麼一個引數就可以,關閉mysql的dns反查功能。
或者修改mysql配置檔案。
編輯/etc/my.cnf
在[mysqld]段中加入
skip-name-resolve
重啟mysql
在/etc/my.cnf 的配置檔案中加入如下一句,禁用DNS反響解析,就能大大加快MySQL連線的速度。
[mysqld]
下面加上這句
skip-name-resolve
#注意有些文章中寫道加入–skip-name-resolve,經驗證,在CentOS5下加入–skip-name-resolve會導致mysql守護程式無法啟動。估計在其他linux系統下是一樣的,windows下沒有測試,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.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1280688/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL在遠端訪問時非常慢的解決方法MySql
- mysql實現遠端訪問,phpmyadmin實現遠端連線mysqlMySqlPHP
- php訪問目標網站時出現亂碼的情況PHP網站
- mysql遠端連線不上怎麼解決?MySql
- mysql 開放遠端連線許可權連不上MySql
- mysql設定指定ip遠端訪問連線例項MySql
- mysql如何允許遠端訪問MySql
- mysql賬戶新增遠端訪問MySql
- navicat連線遠端伺服器docker的mysql容器時連不上報錯伺服器DockerMySql
- 可連線遠端主機情況下新增私鑰到遠端主機
- 訪問jboss上EJB遠端介面問題
- mysql索引不會命中的情況MySql索引
- Oracle如何診斷遠端訪問資料庫慢/超時等問題小結Oracle資料庫
- NAS如何實現遠端訪問
- django:runserver實現遠端訪問DjangoServer
- Mysql資料庫的遠端訪問設定MySql資料庫
- php倒數計時出現-0的情況PHP
- mysql5.7.22-log 修改遠端訪問MySql
- 開啟mysql遠端登入訪問功能MySql
- mysql8.0授權root遠端訪問MySql
- win10遠端桌面連線不上 伺服器批次遠端Win10伺服器
- win10遠端桌面連線不上怎麼辦_window10遠端桌面連線不上如何解決Win10
- tns連線非常慢
- Redis遠端訪問Redis
- fastadmin 偽靜態nginx 無法訪問後端的情況ASTNginx後端
- 遠端桌面連線不上該怎麼辦?
- 解決mysql不能遠端連線的問題MySql
- Windows連線遠端桌面時出現黑屏的解決辦法Windows
- navacate遠端連線mysql實現MySql
- [轉載] MySql實現遠端連線MySql
- 無法遠端連線伺服器上的mysql伺服器MySql
- 華為雲windows遠端介面連線不上的可能原因Windows
- 遠端連線MYSQLMySql
- ORACLE expdp在表空間較多的情況下執行非常緩慢Oracle
- centos7 遠端連線mongodb時,27017埠連線不上的解決辦法CentOSMongoDB
- mysql例項停止、啟動、配置遠端訪問MySql
- Linux中開啟MySQL遠端訪問功能LinuxMySql
- 對於MySQL遠端連線中出現的一個問題總結MySql