Ron*_*her 5 mysql ubuntu laravel
我正在创建一个 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';
Run Code Online (Sandbox Code Playgroud)
最后一个命令总是返回
ERROR 1044 (4200): Access denied for user 'root'@'localhost' to database 'information_schema'
Run Code Online (Sandbox Code Playgroud)
我尝试运行mysql_secure_installation命令来设置 root 密码,但这没有帮助。我可以以 root 用户身份运行该应用程序,但我不想在生产中执行此操作。
我还尝试过全新安装 Ubuntu,只安装了 LAMP 服务。
我在与这个问题无关的事情上浪费了几天时间。答案在 MySQL 手册中:
对于大多数 INFORMATION_SCHEMA 表,每个 MySQL 用户都有权访问它们,但只能看到表中与该用户具有适当访问权限的对象相对应的行。
因此,您不能INFORMATION_SCHEMA直接授予权限,您必须向自己架构上的表授予权限,并且当您这样做时,这些表将开始显示在INFORMATION_SCHEMA查询中。
不幸的是,因为我希望有一个用户能够看到INFORMATION_SCHEMA,但不能看到实际表格的内容,而且似乎没有办法做到这一点。
| 归档时间: |
|
| 查看次数: |
6915 次 |
| 最近记录: |