【发布时间】:2017-11-24 22:35:26
【问题描述】:
我有一个全新的 Wordpress (php-fpm/nginx) 服务器。在 CentOS 上运行。我还有一个 docker 容器,由 vanilla mysql-server 映像构建。
MySQL 配置
它运行在3306端口上,所有MySQL用户都在MySQL中注册,主机为172.17.0.1(例如root@172.17.0.1),这是docker的网关IP。 docker 容器是使用 ansible playbook 安装的。所有配置设置都是参数化的,并且这些参数在适当的地方使用,包括 WordPress 配置文件和在 MySQL docker 安装期间填写 root 密码等内容的环境变量。这里是我配置相关数据库的地方:
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”,标题为“建立数据库连接时出错”,状态码 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 }}'); -
对不起。我在 3 个会话中写了这个,忘记更新我对 wp-config.php 的更改。已编辑。
-
CentOS 主机是否运行 SELinux?默认情况下,可能不允许与 MySQL 建立 TCP 连接。检查
getenforce。
标签: php mysql wordpress docker ansible