无法将 docker mysql 数据库连接到 codeigniter 应用程序
unable to connect docker mysql databse to codeigniter application
我正在使用 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秒 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 数据库。我收到一个错误
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
谁能帮我解决这个问题。
版本
mysql Ver 14.14 Distrib 5.7.28 和
php7.2
谢谢。
改变这个:
$db['default']['hostname'] = '0.0.0.0:3306';
至:
$db['default']['hostname'] = '127.0.0.1:3306';
0.0.0.0 不是有效的连接 IP 地址,请注意,我还假设您的应用程序直接在主机上 运行 而不是在容器中
并更改:
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 图像中的入口点
我正在使用 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秒 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 数据库。我收到一个错误
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
谁能帮我解决这个问题。
版本
mysql Ver 14.14 Distrib 5.7.28 和 php7.2
谢谢。
改变这个:
$db['default']['hostname'] = '0.0.0.0:3306';
至:
$db['default']['hostname'] = '127.0.0.1:3306';
0.0.0.0 不是有效的连接 IP 地址,请注意,我还假设您的应用程序直接在主机上 运行 而不是在容器中
并更改:
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 图像中的入口点