我正在使用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
谢谢。
答案 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映像中的入口点