MySQL服务器无法从远程计算机访问

我在我的本地Ubuntu服务器(11.10)中安装了MySQL服务器。 我无法从远程计算机连接到服务器。

当我尝试: – nmap localhost ,它显示以下内容

港口国服务
 22 / tcp打开ssh
 80 / tcp打开http
 139 / tcp open netbios-ssn
 445 / tcp open microsoft-ds
 631 / tcp open ipp
 3306 / tcp打开mysql

这意味着3306 ,MySQL端口是开放的,对吗? 但是,当我尝试nmap 192.168.0.50 ,这是服务器IP时,我得到以下内容: –

港口国服务
 22 / tcp打开ssh
 80 / tcp打开http
 139 / tcp open netbios-ssn
 445 / tcp open microsoft-ds

这是否意味着使用IP访问时端口未打开? 如果是这样,我该如何打开端口?

我曾尝试过以下代码,但看起来它不起作用。

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

这有什么不对?

您的MySQL服务仅限于提供localhost(接口绑定)。 出于安全原因,这是默认设置。 如果你真的需要直接从其他主机访问它,有一个很好的如何在Ubuntu上启用MySQL的远程访问 ,你可以遵循:

  1. 以root身份,使用您喜欢的编辑器打开/etc/mysql/my.cnf
  2. 查找[mysqld]部分,并在那里找到bind-address关键字。 这通常设置为127.0.0.1 – 更改它以匹配您的“正常”IP地址
  3. 保存文件,然后重新加载服务(例如使用service mysql restart

请记住,您必须通过设置适当的GRANT来使您的远程用户能够从远程访问他们的数据库 – 例如

 GRANT ALL ON mydb.* TO remoteuser@'%' IDENTIFIED BY 'SomePASSWORD'; 

请注意@'%' ,表示“来自任何主机”。