mysql - 不能用 docker laravel 做 mysql
问题描述
当我使用 docker 启动的容器运行 php artisan migrate 时,会出现以下错误。是 root@xxxxxx:/#php artisan migrate 随容器启动而迁移,还是 $php artisan migrate 在另一个终端中?后者完成。
Illuminate\Database\QueryException : SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (SQL: select * from information_schema.tables where table_schema = ogp and table_name = migrations and table_type = 'BASE TABLE')
Exception trace:
1 PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)")
2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=ogp", "root", "pass", [])
#docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
command: >
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--general-log=true
--general-log-file=/var/log/mysql/general.log
environment:
- MYSQL_DATABASE=ogp
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_USER=default
- MYSQL_PASSWORD=password
- TZ=Asia/Tokyo
ports:
- "3306:3306"
#.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ogp
DB_USERNAME=root
DB_PASSWORD=pass
#database.php
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
解决方案
您需要向您的数据库用户授予权限
GRANT ALL PRIVILEGES ON ogp.* TO 'root'@'127.0.0.1';
FLUSH PRIVILEGES;
推荐阅读
- rest - 对 Web 应用程序的不同端口进行读/写访问
- linux - 从管道在环境中注册 Linux VM 在 config.sh 中失败
- bash - 错误:每当我运行 yum 时,宏 % 具有非法名称 (%define)
- sql - 如何查找一个单元格是否出现一次或多次
- autodesk-forge - 编辑访问级别时,用户对项目的访问和权限已在 BIM 360 中删除
- python - 如何根据列的值对熊猫数据框中的列进行分类?
- node.js - 在 Vercel 上部署 NextJS 的 API 路由上使用 fileSystem
- bash - 读取日志文件,如果发生错误重启服务
- node.js - 如何通过 node express 服务器将 http 请求从 angular 重定向到 Web API?
- postgresql - 从交叉表函数外部的参数中获取值