首页 > 解决方案 > 无法将 docker mysql 数据库连接到 codeigniter 应用程序

问题描述

我正在使用 ubuntu 18.04。我已经在 docker 中安装了 mysql 服务器。我无法将 mysql 数据库连接到 codeigniter 项目。

我使用以下命令创建了 mysqldb

docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:8 mysqld --default-authentication-plugin=mysql_native_password

数据库在 docker 上运行。我可以通过 phpmyadmin 访问。

容器 ID 图像命令创建的状态端口名称 6c6474ed3f9d mysql:8 "docker-entrypoint.s…" 17 秒前 Up 14 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql_80

这是我的 database.php

$db['default']['hostname'] = '0.0.0.0:3306';
$db['default']['username'] = 'root';
$db['default']['password'] = '1234';
$db['default']['database'] = 'mydb';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['port']     = '3306'; 
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;    
$db['default']['failover'] = array();
$db['default']['save_queries'] = TRUE;

当我尝试访问 codeigniter 应用程序时,出现以下错误:

发生数据库错误

无法使用提供的设置连接到您的数据库服务器。

文件名:core/Loader.php

行号:346

我尝试使用终端访问 mysql db。我有一个错误

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

谁能帮我解决这个问题。

版本

mysql Ver 14.14 Distrib 5.7.28 和 php 7.2

谢谢你。

标签: phpmysqldockercodeigniterubuntu-18.04

解决方案


改变这个:

$db['default']['hostname'] = '0.0.0.0:3306';

至:

$db['default']['hostname'] = '127.0.0.1:3306';

0.0.0.0 不是有效的连接IP地址,请注意我还假设您的APP是直接在主机上运行而不是在容器中

并改变:

docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:8 mysqld --default-authentication-plugin=mysql_native_password

至 :

docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:8 --default-authentication-plugin=mysql_native_password

您不需要指定 mysqld 命令,因为它已经是 mysql 映像中的入口点


推荐阅读