0

两周前,SuSE 将他们的 SuSE Linux Enterprise Server (SLES) for mariaDB 的软件包10.2.29-3.22.110.2.31-3.25.1. 这个小更新中断了我的 SLES 12SP4 生产服务器以及我的 SLES12SP5 开发服务器上的数据库连接。

此更新引入了套接字连接的问题:到目前为止,我为and组声明了套接字my.cnf, 该组是 SLES11 上的默认位置,并且工作正常。socket = /var/lib/mysql/mysql.sock[client][mysqld]

更新后这种行为发生了变化:当我的 drupal php 应用程序现在尝试连接到这个套接字时,它们只会抛出PDOException: SQLSTATE[HY000] [2006] MySQL server has gone away in lock_may_be_available() (. 如果我称它为 systemctl status mysql.service我的终端,它会通知我mysqld[pid]: refused connect from IP

幸运的是,我发现我的生产机器使用默认的socket = /run/mysql/mysql.sock. 我的猜测是,新的 mariaDB 版本不接受符号链接,因为/var/lib/mysql它位于不同的卷上,并在我的设置中由符号链接集成。

但是我的开发机器也拒绝这个解决方案,我无法让数据库再次工作。prod 和 dev 之间的主要区别在于我已经将 dev 迁移到了 service pack 5,因此我犹豫将我的生产环境从 SP4 升级到 SP5。

  • 这不是防火墙问题,因为关闭防火墙后它不会改变。
  • bind-address = 127.0.0.1它也在drupal设置中配置为主机
  • 我将套接字目录更改为,/tmp/mysql.sock因为它应该可以从任何地方访问而没有结果。
  • 文件权限是 srwxrwxrwx 1 mysql mysql 0 13. Mär 11:59 mysql.sock=
  • netstat -ln | grep mysql返回unix 2 [ ACC ] STREAM LISTEN 670834 /tmp/mysql.sock
  • systemctl status mysql.service返回 mariadb.service - MySQL server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) Active: active (running) since Fr 2020-03-13 11:59:54 CET; 3h 2min ago Main PID: 12393 (mysqld) Status: "Taking your SQL requests now..." Tasks: 30 (limit: 512) CGroup: /system.slice/mariadb.service └─12393 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=mysql

在 mariaDB 更改日志中没有任何关于套接字处理的证据。

有没有人遇到过同样的问题?或者有什么想法可以解决这个问题?不幸的是,我不是数据库专家......

谢谢,

4

1 回答 1

0

我找到了解决方案:MariaDB 10.2.31-3.25.1。在 SLES 上开始使用配置不同的 /etc/hosts.allow - 在我的开发服务器上比在我的生产服务器上更受限制。因此客户端无法访问数据库服务器。

我想知道这种不同的行为是在哪里引入的——我在 mariaDB 的更改日志中没有发现任何东西......

于 2020-03-17T13:58:27.327 回答