我有一个全新的CentOS Wordpress (php-fpm/nginx)服务器,还有一个由vanilla mysql-server镜像构建的docker容器。
MySQL配置
MySQL运行在端口3306
上,并且所有MySQL用户都在MySQL中使用主机172.17.0.1
注册(例如:root@172.17.0.1
),这是docker的网关IP。Docker容器使用Ansible Playbook安装。所有配置设置都是参数化的,并且在适当的地方使用这些参数,包括Wordpress配置文件和环境变量,在MySQL docker安装期间填充类似于根密码之类的内容。这里是我配置相关数据库的代码:
WordPress配置:
这分为两部分,其中我将包括相关部分。在我的Ansible Playbook中,此代码成功设置了WordPress表和用户:
- name: Create WordPress database
mysql_db:
name: '{{ wp_db_name }}'
state: present
login_user: root
login_password: '{{ mysql_root_password }}'
login_host: '{{ docker_mysql_ip }}'
- name: Create WordPress database user
mysql_user:
name: '{{ wp_db_user }}'
password: '{{ wp_db_password }}'
priv: '{{ wp_db_name }}.*:ALL'
state: present
login_user: root
host: '{{ docker_gateway_ip }}'
login_password: '{{ mysql_root_password }}'
login_host: '{{ docker_mysql_ip }}'
并且相关的wp-config.php:
define('DB_NAME', 'wordpress');
define('DB_USER', '{{ wp_db_user }}');
define('DB_PASSWORD', '{{ wp_db_password }}');
define('DB_HOST', '{{ docker_mysql_ip }}');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
当我导航到wp-admin时,具体问题如下:"Warning: mysql_connect(): Permission denied in /srv/wordpress/wp-includes/wp-db.php on line 1473
",标题为“Error establishing a database connection”,状态码500。
令人困惑的部分
查看 wp-config.php 文件后发现,用户名、密码和数据库名称都与应该的完全相同。将 wp-config.php
中的主机、用户和密码复制/粘贴到命令行的相应位置(例如:mysql -u wordpress -p -h 172.17.0.2
),我可以连接,并查看 Wordpress 数据库。
总结
当使用命令行时,MySQL 可以正常连接,但 Wordpress 却无法连接。由于我对 Wordpress 或 PHP 不是很熟悉,因此任何有关问题相关日志可能位于何处的想法都将不胜感激。
define('DB_HOST', '127.0.0.1:{{ mysql_port }}');
- Robertgetenforce
命令。 - Michael Berkowski