浏览器显示“2003 (HY000):无法连接到 MySQL 服务器”

浏览器显示“2003 (HY000):无法连接到 MySQL 服务器”

我在 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,但即使这样也没有任何作用。

相关内容