我正在创建一个Laravel应用程序,并在全新安装的Ubuntu 19.10.03上的生产模式下测试它。 安装了全新的LAMP(PHP 7.3,MySQL 8.0.19-0)。
我可以创建一个新的数据库和一个具有对数据库完全访问权限的新用户,但是Laravel要求该用户还必须从“information_schema”数据库获得SELECT选项。 我使用的过程如下:
$ sudo mysql
mysql> CREATE DATABASE IF NOT EXISTS `my-laravel-database`;
mysql> CREATE USER IF NOT EXISTS 'laravelUser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'myPass';
mysql> GRANT ALL PRIVILEGES ON `my-laravel-database`.* TO 'laravelUser'@'localhost' WITH GRANT OPTION;
mysql> GRANT SELECT ON `information_schema`.* TO 'laravelUser'@'localhost';
最后一个命令总是返回。
ERROR 1044 (4200): Access denied for user 'root'@'localhost' to database 'information_schema'
我尝试运行mysql_secure_installation
命令来设置root密码,但没有起作用。我可以使用root用户运行应用程序,但我不想在生产环境中这样做。
我还尝试过只安装了LAMP服务的Ubuntu的全新安装。
.env
文件吗?从错误信息来看,似乎你的.env
文件中DB_USERNAME
的值被设置成了root
。如果你已经修改过这个值但仍然出现这个错误,尝试在控制台或终端使用php artisan cache:clear
命令清理缓存,或者在路由文件中使用Artisan::call('cache:clear');
。 - Rian Zaman