首页 > 数据库 > MySQL > 正文

关于局域网内连接MySQL的问题

2024-07-09 22:43:46
字体:
来源:转载
供稿:网友

第一,局域网内连接MySQL一般用的语句就是:
jdbc:mysql://localhost:3306/database,
但是当你要连接到其他机器上的mysql的时候,单单把上面的语句的localhost改成对应的ip是没有用的,因为Mysql默认开放的连接权限是localhost,当你需要连接到其他机器上的时候,需要其他机器上的MySQL开启除本地以外的其他ip连接的权限。
在局域网内连接MySQL首先要给MySQL开启远程连接的功能,在MySQL服务器上MySQL命令行执行以下命令:
Sql代码 收藏代码
grant all privileges on *.* to root@"%" identified by '123' with grant option;
flush privileges;
它的意思是给从任意ip地址连接的用户名为root,密码为123的用户赋予所有的权限。其中的"%"为任意的ip地址,如果想设为特定的值也可以设定为特定的值。
执行了该语句后就可以在其他机器上以root:123访问到该机器上了

第二,linux 下局域网内连接mysql server 超慢的解决方法和可能的问题
在MySQL中执行Show Processlist语句可以看到发现大量unauthenticated user进程卡住,在网上搜索一翻,找到问题根源:
发现这属于官方一个系统上的特殊设定,亦可称呼他为MySQL的bug,不管连结的的方式是经过hosts或是IP的模式,他都会对DNS做反查。MySQL会尝试去反查IP->DNS,由于反查解析过慢,无法应付快速多量的查询。
解决方式很简单:启动MySQL的时候,添加skip-name-resolve选项,禁止域名解析,问题解决。
skip-name-resolve
选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
若使用skip-grant-tables系统将对任何用户的访问不做任何访问控制,但可以用 mysqladmin flush-privileges或mysqladmin reload来开启访问控制;默认情况是show databases语句对所有用户开放,
如果mysql服务器没有开远程帐户,就在my.cnf里面加上skip-grant-tables



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表