我在 DigitalOcean 上创建了一个 CentOS 9 droplet 和一个单独的 MySQL 8 数据库。我可以从 droplet 的控制台以及 Mac 上的终端连接到此数据库。我还可以从我的终端顺利运行一个 python 脚本,该脚本从该数据库中检索数据。但我无法在 Mac 上的 Web 浏览器中运行该脚本,因为我收到此错误:
2003(HY000):无法连接到‘db-mysql-......ondigitalocean.com:25060’上的 MySQL 服务器 (13)
以下是一些信息:droplet 和数据库都在同一个帐户和同一个区域中。没有设置 VPC 网络。我在数据库设置中添加了 droplet 的 IP 地址和我的 Mac 的 IP 作为可信来源。这应该没问题,因为我已经写过我可以从我的 Mac 访问数据库。管理文件的优先级顺序是:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
并且 /etc/my.cnf 是正确的配置文件
sudo find / -type f -name "my.cnf" -o -name "mysqld.cnf" 2>/dev/null
/etc/my.cnf
/etc/my.cnf 仅包含几行说明。/etc/mysql
文件夹甚至不存在。我拥有的是/etc/my.cnf.d/mysql-server.cnf
。但即使添加到bind-address = 0.0.0.0
和中的任何一个或两个之后/etc/my.cnf
,/etc/my.cnf.d/mysql-server.cnf
我仍然会收到相同的错误。我甚至添加port = 25060
到/etc/my.cnf
(我无法将其添加到,/etc/my.cnf.d/mysql-server.cnf
因为然后我会在重新启动 mysql 时遇到错误。
内容/etc/my.cnf
:
GNU nano 5.6.1 /etc/my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
bind-address = 0.0.0.0
port = 25060
内容/etc/my.cnf.d/mysql-server.cnf
GNU nano 5.6.1 /etc/my.cnf.d/mysql-server.cnf Modified
# http://dev.mysql.com/doc/refman/en/server-configuration-defaults.html
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
bind-address = 0.0.0.0
检查防火墙设置:
sudo firewall-cmd --state
Running
sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: cockpit dhcpv6-client http https ssh
ports: 3306/tcp 25060/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
但:
nmap -p 25060 localhost
PORT STATE SERVICE
25060/tcp closed unknown
尽管
nmap -p 3306 localhost
PORT STATE SERVICE
3306/tcp open mysql
也许这是错误,但我似乎无法打开端口:
sudo firewall-cmd --zone=public --add-port=25060/tcp --permanent
Warning: ALREADY_ENABLED: 25060:tcp
success
您可能还注意到 /etc/my.cnf 中没有 [mysqld] 部分。这是因为如果我添加它,我将无法重新启动 mysql:
sudo systemctl restart mysqld
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xeu mysqld.service" for details
虽然在这些日志中我找不到任何重要的东西,但我能够在另一个文件夹中创建自定义的 my.cnf,最后重新启动 mysql,但即使这样也没有任何作用。