如何通过终端访问 phpMyAdmin
How can I access phpMyAdmin through terminal
我尝试在 laravel 项目中通过终端创建数据库,它告诉我数据库已创建,但是当我转到 phpMyAdmin 时却找不到它。
mysql> create database house
-> ;
Query OK, 1 row affected (0.06 sec)
mysql> SHOW DATABASES;
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does
not exist
我用的是 MAMP,但它不起作用,所以我使用 Xamp,它也不起作用,当我 运行 :
mysql> select user from mysql.user
-> ;
+------------------+
| user |
+------------------+
| mysql.infoschema |
| mysql.session |
| mysql.sys |
| root |
| user |
+------------------+
5 rows in set (0.01 sec)
它给了我另一个在 MAMP phpMyAdmin 或 Xamp phpMyAdmin 中不存在的用户。
有没有办法成功连接到 MAMP 或 XAMP phpMyAdmin。
注:
Laravel 项目的 IP 地址:127.0.0.1 与 MAMP 相同
但 Xamp 的 IP 地址是:192.168.64.2
这是我的 .env 文件:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pizzahouse
DB_USERNAME=root
DB_PASSWORD=
不知何故,您的MySQL用户权限被破坏了(mysql.infoschema是MySQL内部使用的系统用户)。为什么它存在但不能被 MySQL 内部使用尚不清楚,但错误消息显示该内部用户已损坏。从中恢复的最简单方法是重新安装 MySQL(通过 XAMPP 或 WAMP 或您最终选择的任何软件包)。您需要确保删除整个 MySQL 数据目录(卸载程序应该自动执行或询问您,我不记得是哪个)。请注意,这将破坏您数据库中的所有现有数据,因此如果您希望保留现有数据,则不应继续。
当您重新安装时,MySQL 将正确配置这些必需的系统用户,您应该备份并 运行ning。
你通常不应该 运行 XAMPP 和 WAMP 并排在一起,因为它们或多或少地服务于相同的通用目的,你有可能因为它们竞争相同的端口和(可能)MySQL 的数据目录。这可能就是这里发生的事情,尽管没有足够的信息可以知道。 MySQL 使用 "data directory" (datadir) 在磁盘上保存所有数据库文件。您的两台服务器(XAMPP 和 WAMP)最终都使用了相同的路径,这似乎是合理的(尽管可能不太可能),这会导致数据库、表和用户损坏。除此之外,一些奇怪的服务器崩溃、磁盘损坏或不正确的 SQL 命令也可能导致问题。
可能可以使用 mysqld --initialize --user=mysql
(documentation 等命令恢复现有系统用户,请注意,您需要在下次登录时重置 root 密码),但由于存在这种程度的不确定性,我认为从头开始重新安装是一个更安全的全面选择——再次指出这将破坏数据库中已经存在的任何数据。
我尝试在 laravel 项目中通过终端创建数据库,它告诉我数据库已创建,但是当我转到 phpMyAdmin 时却找不到它。
mysql> create database house
-> ;
Query OK, 1 row affected (0.06 sec)
mysql> SHOW DATABASES;
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does
not exist
我用的是 MAMP,但它不起作用,所以我使用 Xamp,它也不起作用,当我 运行 :
mysql> select user from mysql.user
-> ;
+------------------+
| user |
+------------------+
| mysql.infoschema |
| mysql.session |
| mysql.sys |
| root |
| user |
+------------------+
5 rows in set (0.01 sec)
它给了我另一个在 MAMP phpMyAdmin 或 Xamp phpMyAdmin 中不存在的用户。
有没有办法成功连接到 MAMP 或 XAMP phpMyAdmin。
注:
Laravel 项目的 IP 地址:127.0.0.1 与 MAMP 相同 但 Xamp 的 IP 地址是:192.168.64.2
这是我的 .env 文件:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pizzahouse
DB_USERNAME=root
DB_PASSWORD=
不知何故,您的MySQL用户权限被破坏了(mysql.infoschema是MySQL内部使用的系统用户)。为什么它存在但不能被 MySQL 内部使用尚不清楚,但错误消息显示该内部用户已损坏。从中恢复的最简单方法是重新安装 MySQL(通过 XAMPP 或 WAMP 或您最终选择的任何软件包)。您需要确保删除整个 MySQL 数据目录(卸载程序应该自动执行或询问您,我不记得是哪个)。请注意,这将破坏您数据库中的所有现有数据,因此如果您希望保留现有数据,则不应继续。
当您重新安装时,MySQL 将正确配置这些必需的系统用户,您应该备份并 运行ning。
你通常不应该 运行 XAMPP 和 WAMP 并排在一起,因为它们或多或少地服务于相同的通用目的,你有可能因为它们竞争相同的端口和(可能)MySQL 的数据目录。这可能就是这里发生的事情,尽管没有足够的信息可以知道。 MySQL 使用 "data directory" (datadir) 在磁盘上保存所有数据库文件。您的两台服务器(XAMPP 和 WAMP)最终都使用了相同的路径,这似乎是合理的(尽管可能不太可能),这会导致数据库、表和用户损坏。除此之外,一些奇怪的服务器崩溃、磁盘损坏或不正确的 SQL 命令也可能导致问题。
可能可以使用 mysqld --initialize --user=mysql
(documentation 等命令恢复现有系统用户,请注意,您需要在下次登录时重置 root 密码),但由于存在这种程度的不确定性,我认为从头开始重新安装是一个更安全的全面选择——再次指出这将破坏数据库中已经存在的任何数据。