You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在DigitalOcean使用备份创建新Droplet后出现数据库问题

解决CodeIgniter 2.1.3中MySQL连接权限错误的方案

1. 核对CodeIgniter数据库配置文件

打开application/config/database.php,逐一检查核心配置项:

  • $db['default']['hostname']: 确认值为localhost或127.0.0.1(MySQL对两者权限规则不同:localhost用socket连接,127.0.0.1用TCP/IP连接)
  • $db['default']['username']: 确保是root,无多余空格或拼写错误
  • $db['default']['password']: 核对密码是否准确,注意大小写、特殊字符,不要额外添加引号(除非密码本身包含引号)
  • $db['default']['database']: 确认数据库名称拼写正确,且该数据库已在MySQL中创建

示例正确配置片段:

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'your_real_password';
$db['default']['database'] = 'target_db_name';
$db['default']['dbdriver'] = 'mysql';

2. 直接测试MySQL root用户权限

在服务器终端执行命令,验证root用户的连接能力:

mysql -u root -p

输入密码后若能成功登录,说明MySQL本身权限正常;若登录失败,使用超级权限账号登录MySQL后执行以下SQL重置权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'new_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

如果localhost登录失败,尝试用127.0.0.1测试:

mysql -u root -p -h 127.0.0.1

若此命令能成功登录,需将CodeIgniter配置中的hostname改为127.0.0.1。

3. 配置MySQL Socket路径(针对localhost连接)

如果使用localhost作为主机名,需确认CodeIgniter的socket配置与MySQL一致:

  1. 打开my.cnf(Linux)或my.ini(Windows),找到socket配置,例如:
socket = /var/run/mysqld/mysqld.sock
  1. 在database.php中添加或修改对应项:
$db['default']['socket'] = '/var/run/mysqld/mysqld.sock';

4. 检查Apache/PHP运行用户权限

Linux环境下,Apache通常以www-data或apache用户运行,需确保该用户能访问MySQL的socket文件:

chmod 755 /var/run/mysqld/
chown mysql:mysql /var/run/mysqld/mysqld.sock

同时,通过phpinfo()查看PHP的mysql.default_socket或mysqli.default_socket配置,确认其与MySQL的socket路径一致。

5. 排查配置覆盖情况

检查是否存在其他配置覆盖数据库参数:

  • application/config/config.php中的相关配置
  • 自定义配置文件或环境变量
  • .htaccess中的重写规则是否影响了配置加载

内容的提问来源于stack exchange,提问作者phpforari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:15:28