为什么mysql服务器不接受非本地连接请求,但仍然监听tcp端口?

为什么mysql服务器不接受非本地连接请求,但仍然监听tcp端口?

具有默认设置的 mysql 服务器正在侦听计算机上的端口:

$ nmap -p0-65535 192.168.1.97

Starting Nmap 7.60 ( https://nmap.org ) at 2019-03-20 14:34 EDT
Nmap scan report for ocean.fios-router.home (192.168.1.97)
Host is up (0.00036s latency).
Not shown: 65533 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
3306/tcp  open  mysql
33060/tcp open  mysqlx

Nmap done: 1 IP address (1 host up) scanned in 4.50 seconds

我无法从另一台机器连接到 mysql 服务器:

$ mysql  --user=root --host=ocean --password test
Enter password: 
ERROR 1130 (HY000): Host 'olive.fios-router.home' is not allowed to connect to this MySQL server

我该如何理解这两个矛盾的结果?

mysql服务器是否收到连接请求,但随后拒绝?

如果它不接受非本地连接请求,为什么它要监听 tcp 端口?

谢谢。

答案1

那是因为 MySQL 确实将用户视为用户。在 MySQL 中,您将权限授予写为 的用户+主机组合user@host

下面的每个例子都是不同的

GRANT ALL PRIVILEGES ON db.* TO 'user1'@'%';
GRANT ALL PRIVILEGES ON db.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON db.* TO 'user1'@'192.168.1.97';

每个用户+主机组合可以有不同的密码(...如果附加IDENTIFIED BY 'your-password';

您可以找到更多示例和更好的描述在 MySQL GRANT 文档中

答案2

好吧,看来你重复了你的问题而不是编辑原始的

如果您已bind-address按照其他问题所述进行编辑,您的服务不应侦听除该参数上配置的 IP 地址之外的其他 IP 地址。

其次,不允许您连接到该服务器,因为您还需要提供 MySQL 应用程序级别的访问权限。

在该远程服务器的本地 shell 中,访问mysql提示符并执行以下命令

`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';`

您似乎在 MySQL 中缺少 2 个基本内容:网络配置和应用程序级别授权/权限。我建议你进一步研究该技术。

进一步谷歌它ERROR 1130 (HY000): Host is not allowed。您会惊讶地发现该搜索的第一个结果也会将您引导至 StackExchange。这里:错误 1130 (HY000): 主机 '' 不允许连接到此 MySQL 服务器 [重复]

相关内容