我已经在本地 Ubuntu 服务器 (11.10) 上安装了 MySQL 服务器。我无法从远程计算机连接到该服务器。
当我尝试时:- nmap localhost
,它显示以下内容
港口国服务 22/tcp 开启 ssh 80/tcp 开放 http 139/tcp 打开 netbios-ssn 445/tcp 打开 microsoft-ds 631/tcp 开放 ipp 3306/tcp 打开 mysql
这意味着3306
MySQL 端口是开放的,对吧?但是当我尝试nmap 192.168.0.50
(即服务器 IP)时,我得到了以下信息:-
港口国服务 22/tcp 开启 ssh 80/tcp 开放 http 139/tcp 打开 netbios-ssn 445/tcp 打开 microsoft-ds
这是否意味着使用 IP 访问时端口未打开?如果是,我该如何打开端口?
我尝试过以下代码,但看起来它不起作用。
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
这里有什么问题?
答案1
您的 MySQL 服务已绑定为仅服务于本地主机(接口绑定)。出于安全原因,这是默认设置。如果您确实需要直接从其他主机访问它,那么有一个不错的如何在 Ubuntu 上启用 MySQL 的远程访问您可以关注:
- 以 root 身份打开
/etc/mysql/my.cnf
或/etc/mysql/mysql.conf.d/mysqld.cnf
使用您最喜欢的编辑器,就像在不同的系统上一样找到变得与众不同。 - 查找
[mysqld]
部分,然后在其中查找bind-address
关键字。这通常设置为127.0.0.1
-- 将其更改为匹配您的“正常” IP 地址 - 保存文件并重新加载服务(例如使用
service mysql restart
)
请记住,您必须通过设置适当的 GRANT 来允许远程用户从远程访问其数据库——例如
GRANT ALL ON mydb.* TO remoteuser@'%' IDENTIFIED BY 'SomePASSWORD';
请注意@'%'
,它的意思是“来自任何主机”。