具有默认设置的 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 服务器 [重复]