无法将docker mysql数据库连接到Codeigniter应用程序

时间:2020-01-06 07:56:12

标签: php mysql docker codeigniter ubuntu-18.04

我正在使用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秒前向上14秒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

谢谢。

1 个答案:

答案 0 :(得分:1)

更改此项:

$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映像中的入口点