當WordPress和MariaDB無法連接時,我嘗試了以下解決方法

以下是我解决在Kubernetes集群中使用WordPress和MySQL进行通信时遇到的问题的方法。

为了解决WordPress出现的”Error establishing a database connection”错误,我尝试了以下方法。

暫時確認了一下

WordPress设置

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wpdb' );

/** MySQL database username */
define( 'DB_USER', 'wpuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'wppass' );

我已经核实了 wp-config.php 文件中的 DB_NAME、DB_USER 和 DB_PASSWORD 是否与 mariaDB 的设置匹配。

MariaDB的配置

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wpdb               |
+--------------------+
MariaDB [(none)]> select user, host from mysql.user;
+-------------+--------------+
| User        | Host         |
+-------------+--------------+
|             | bbcec86f632b |
|             | localhost    |
| mariadb.sys | localhost    |
| mysql       | localhost    |
| root        | localhost    |
| wpuser      | localhost    |
+-------------+--------------+

我已确认 wp-config.php 文件中设置的数据库和用户是否存在。

show grants for 'ユーザー'@'ホスト'

我也确认了创建的用户是否具有对创建的数据库的权限。

检查其他容器时发生的事情

WordPress设置

/** MySQL hostname */
define( 'DB_HOST', 'mysql' );

因为我在另一个服务中搭建了mariadb和wordpress,所以无法通过默认的localhost连接。我将其设置为服务名称,因为可以通过服务名称进行名称解析。也许需要通过curl等发送请求来确认名称解析是否正常工作。

MariaDB的配置

检查配置

我在查看官方网站的同时,进行了设置,以便用户可以访问。

[mysqld]
user = root
datadir = /var/lib/mysql/
skip-networking = 0 
skip-bind-address

我将这样的内容保存在名为my.cnf的文件中,并将其放置在/etc目录下。

mysql --help | find "my.cnf"

我认为通过搜索并修改默认配置,它也可以正常运行。

在数据库中创建的用户的主机。

为了从其他服务中访问在MariaDB中添加的用于WordPress的用户,必须设置适当的权限。

'ユーザー名'@'WP側のIP'
または
'ユーザー名'@'%'
ワイルドカード指定なるのですべてのホストから接続可能

這是我無法連接的原因。

'ユーザー名'@'localhost'

因为从以前创建的Dockerfile中复制粘贴过来,所以仍然是localhost,无法连接到Mariadb,导致wordpress无法正常工作。

总结

终于见到你了。

wp.png
广告
将在 10 秒后关闭
bannerAds