连接被拒绝 SQL:select * from information_schema.tables where table_schema = firstdb and table_name = migrations and table_type = 'BASE TABLE

问题描述 投票:0回答:9

我安装并打开了 XAMPP,这就是我访问 phpmyadmin 页面的方式。我在 phpmyadmin 中创建了一个名为“firstdb”的数据库。

我还在本地存储的 laravel 文件中创建了身份验证。我正在尝试使用 php artisan migrate 迁移表,但收到以下错误。

user@Andress-MacBook-Pro admin-panel % php artisan migrate

   Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = firstdb and table_name = migrations and table_type = 'BASE TABLE')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671
    667|         // If an exception occurs when attempting to run a query, we'll format the error
    668|         // message to include the bindings with SQL, which will make this exception a
    669|         // lot more helpful to the developer instead of just the database's errors.
    670|         catch (Exception $e) {
  > 671|             throw new QueryException(
    672|                 $query, $this->prepareBindings($bindings), $e
    673|             );
    674|         }
    675| 

      +37 vendor frames 
  38  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

我到处都找过了,请帮忙。

php laravel database-migration migrate
9个回答
12
投票

可能是您的

.env
文件中的 mysql 端口号错误。检查您的
.env
文件并确保端口号与 mysql 正在使用的端口号匹配。


5
投票

我注意到命令行输出中的密码与 env 文件中实际的密码有些奇怪。结果我的密码中有一个数字符号,但它被切断了。

因此,请在运行

php artisan migrate
后检查输出,并确保密码实际上与环境中的密码匹配(以及与此相关的所有信息)。解决方法是在不匹配的情况下添加引号。

DB_PASSWORD=abcdefghijklmonp5#Q

会变成

DB_PASSWORD='abcdefghijklmonp5#Q'


1
投票

除了确保所有配置都正确,用引号转义密码之外,我在 Linux 上进行全新安装时也遇到了类似的问题。

SQLSTATE[HY000] [1045] 用户“用户名”@“localhost”的访问被拒绝(使用密码:YES)(SQL:从 information_schema.tables 中选择 *,其中 table_schema = Studentaffairs 和 table_name = 迁移并且 table_type = 'BASE TABLE')

为了解决这个问题,我确保运行

composer update
并且为了更好的措施,我运行
npm run dev

然后就可以毫无问题地迁移了。


1
投票

尝试将 .env 上的 DB_HOST 设置为

DB_HOST=localhost

0
投票

尝试在 php.ini 上设置并搜索:

;extension=pdo_mysql.so

删除“;”取消注释

1


0
投票

首先,检查用户插件:

mysql> SELECT User,Host,plugin FROM mysql.user WHERE user='root';

如果用户使用 caching_sha2_password 更改为 mysql_native_password,因为 PHP 尚不理解 caching_sha2_password

mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

0
投票

为了设置数据库主机,您需要编辑 .env 文件并指定所需的主机名而不是 IP 地址。为此,请在 .env 文件中找到 DB_HOST 变量,并为其指定值“localhost”。这将指示您的应用程序连接到本地数据库服务器,该服务器通常与应用程序本身在同一台计算机上运行。

例如,您可能会在 .env 文件中看到这样的行:

DB_HOST=

要将主机名设置为“localhost”,您只需将行更新为:

DB_HOST=localhost

将更改保存到 .env 文件后,您的应用程序应该能够使用您指定的主机名或 IP 地址连接到本地数据库服务器。


0
投票

将其添加到您的 .env SQL_REQUIRE_PRIMARY_KEY=0

更改你的 laravel 数据库配置文件,修改选项如下:

'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET SESSION sql_require_primary_key=' . env('SQL_REQUIRE_PRIMARY_KEY'),
            ]) : [],

整个 mysql 配置块将如下所示;

'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' => 'InnoDB ROW_FORMAT=DYNAMIC',
            #'ssl_mode' => env('SSL_MODE'),
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET SESSION sql_require_primary_key=' . env('SQL_REQUIRE_PRIMARY_KEY'),
            ]) : [],
        ],

-3
投票

.env
文件中的 DB_CONNECTION=127.0.0.7 更改为 mysql

© www.soinside.com 2019 - 2024. All rights reserved.