在云服务器上重建 WordPress 时,正确配置 wp-config.php 是连接数据库的关键步骤。以下是安全、规范、可维护的完整操作指南(适用于主流 Linux 发行版 + MySQL/MariaDB):
✅ 一、前提确认(务必先完成)
-
数据库已创建并授权
-- 登录 MySQL(如 root) mysql -u root -p -- 创建专用数据库(推荐 UTF8MB4 支持 emoji) CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建专用用户(⚠️ 不要用 root 连接 WordPress!) CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '强密码!2024#'; -- 授予最小必要权限 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON wordpress_db.* TO 'wp_user'@'localhost'; -- 刷新权限 FLUSH PRIVILEGES;💡 提示:若云服务器数据库在远程(如 RDS),将
'localhost'改为'your-web-server-ip'或'%'(不推荐生产环境用%),并确保安全组/防火墙放行 3306 端口。 -
WordPress 文件已解压
确保wp-config.php尚未存在(或已备份旧文件),我们从模板生成。
✅ 二、生成 wp-config.php(推荐方式)
✅ 方式 1:使用 WordPress 官方命令行工具(最安全)
# 进入 WordPress 根目录(如 /var/www/html)
cd /var/www/html
# 若未安装 wp-cli,先安装(Ubuntu/Debian 示例):
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# 生成 wp-config.php(自动处理常量、密钥、字符集)
wp config create
--dbname=wordpress_db
--dbuser=wp_user
--dbpass='强密码!2024#'
--dbhost=localhost
--dbprefix=wp_
--locale=zh_CN
--extra-php <<PHP
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);
PHP
✅ 优势:自动从 api.wordpress.org 获取高强度密钥(AUTH_KEY 等),避免手写错误。
✅ 方式 2:手动编辑(仅限学习/特殊需求)
-
复制模板:
cp wp-config-sample.php wp-config.php -
编辑
wp-config.php(关键部分):// ✅ 数据库连接信息(务必修改!) define('DB_NAME', 'wordpress_db'); define('DB_USER', 'wp_user'); define('DB_PASSWORD', '强密码!2024#'); define('DB_HOST', 'localhost'); // 云服务器本地数据库用 localhost;RDS 填内网地址如 'rm-xxx.mysql.rds.aliyuncs.com' define('DB_CHARSET', 'utf8mb4'); // 必须 utf8mb4(支持 emoji 和四字节 Unicode) define('DB_COLLATE', 'utf8mb4_unicode_ci'); // ✅ 自动生成密钥(强烈建议!访问 https://api.wordpress.org/secret-key/1.1/salt/ 获取新密钥) define('AUTH_KEY', 'aBcD123!...'); // ← 替换为真实密钥 define('SECURE_AUTH_KEY', 'eFgH456@...'); define('LOGGED_IN_KEY', 'iJkL789#...'); define('NONCE_KEY', 'mNoP012$...'); define('AUTH_SALT', 'qRsT345%...'); define('SECURE_AUTH_SALT', 'uVwX678^...'); define('LOGGED_IN_SALT', 'yZaB901&...'); define('NONCE_SALT', 'cDeF234*...'); // ✅ 其他安全加固(添加到文件末尾附近) define('WP_MEMORY_LIMIT', '256M'); define('WP_MAX_MEMORY_LIMIT', '512M'); define('DISALLOW_FILE_EDIT', true); // 禁用后台主题/插件编辑器(防误操作) define('FORCE_SSL_ADMIN', true); // 启用后台强制 HTTPS(需已配置 SSL) // ✅ 防止直接访问敏感目录(可选但推荐) define('WP_CONTENT_DIR', dirname(__FILE__) . '/wp-content'); define('WP_CONTENT_URL', 'https://your-domain.com/wp-content');
⚠️ 注意事项:
- 密码中若含
$,,',"等特殊字符,在 PHP 字符串中需转义(如$),更推荐用 wp-cli 自动生成。DB_HOST:
- 云服务器本地 MySQL →
localhost(Unix socket)或127.0.0.1(TCP)- 阿里云 RDS/腾讯云 CDB → 填内网地址(如
rm-xxx.mysql.rds.aliyuncs.com),不要用公网地址!DB_CHARSET必须为utf8mb4(不是utf8),否则可能乱码或无法保存 emoji。
✅ 三、权限与安全加固(重要!)
# 设置文件权限(防止被恶意写入)
sudo chown -R www-data:www-data /var/www/html/ # Ubuntu/Debian(Nginx/Apache 用户组)
# sudo chown -R apache:apache /var/www/html/ # CentOS/RHEL
sudo find /var/www/html/ -type d -exec chmod 755 {} ;
sudo find /var/www/html/ -type f -exec chmod 644 {} ;
# wp-config.php 必须设为只读(仅所有者可写)
sudo chmod 600 /var/www/html/wp-config.php
# 可选:将 wp-config.php 移出 Web 根目录(更高安全)
# mv /var/www/html/wp-config.php /var/www/
# 在 wp-config.php 开头添加:
# define('ABSPATH', '/var/www/html/');
# 并在 index.php 中修改 require_once(ABSPATH . 'wp-config.php');
✅ 四、验证连接
- 访问
https://your-domain.com/wp-admin/install.php - 若看到「欢迎界面」→ 数据库连接成功 ✅
- 若报错(如
Error establishing a database connection):- 检查
DB_NAME/DB_USER/DB_PASSWORD是否拼写错误(区分大小写!) - 检查 MySQL 服务是否运行:
sudo systemctl status mysql - 检查用户权限:
mysql -u wp_user -p -e "SHOW DATABASES;" - 查看错误日志:
tail -f /var/log/mysql/error.log或 WordPress 的wp-content/debug.log
- 检查
🌟 最佳实践总结
| 项目 | 推荐做法 |
|---|---|
| 数据库用户 | 专用账号(非 root),最小权限原则 |
| 密码强度 | ≥12位,含大小写字母+数字+符号(用 pwgen -s -y 16 生成) |
| DB_HOST | 优先 localhost(socket);RDS 用内网地址 + 白名单 |
| 字符集 | utf8mb4 + utf8mb4_unicode_ci(不可省略!) |
| 密钥 | 务必用 https://api.wordpress.org/secret-key/1.1/salt/ 生成 |
| wp-config.php 位置 | Web 根目录外(如 /var/www/wp-config.php)更安全 |
| 调试模式 | 生产环境禁用:define('WP_DEBUG', false); |
需要我帮你:
- ✅ 生成一份完整的
wp-config.php示例(含中文注释)? - ✅ 写一个一键部署脚本(含 MySQL 创建 + wp-config 生成)?
- ✅ 配置 Nginx/Apache 的 WordPress 伪静态规则?
- ✅ 迁移旧站时如何安全导出/导入数据库?
欢迎随时告诉我你的具体环境(如:Ubuntu 22.04 + Nginx + 阿里云 RDS),我会提供定制化方案 👇
PHPWP博客