當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无法正常工作。
总结
终于见到你了。