首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接被拒绝- Laravel,远程数据库

问连接被拒绝- Laravel,远程数据库
EN

Stack Overflow用户
提问于 2019-09-10 16:02:07
回答 3查看 2.6K关注 0票数 0

在本地环境中,将数据插入数据库工作。但是,在我的远程服务器上,它不工作。

我已经更改了远程.env和database.php文件,以便远程数据库和服务器能够正常工作。我可以通过mysqlworkbench连接到数据库,没有任何问题。

但是,我得到了以下错误:

例外情况:“照明\数据库\QueryException”文件:"/var/www/html/go/releases/1/vendor/laravel/framework/src/Illuminate/Database/Connection.php“行: 664条消息:"SQLSTATEHY000连接被拒绝(energy、diet、car、shortFlights、longFlights、email、country、total、updated_at、created_at)值(1.13、1.7、0.55、0、0,荷兰test51@mail.com,5.38,2019-09-10 15:27:41,2019-09-10 15:27:41))“追踪:,…”

.env (将一些值替换为默认值,以保护隐私)。

代码语言:javascript
复制
APP_NAME=thename
APP_ENV=production
APP_KEY=the key
APP_DEBUG=true
APP_LOG_LEVEL=error
APP_URL=theurl

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=thedatabasename
DB_USERNAME=theusername
DB_PASSWORD=thepassword

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=localhost
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

database.php (重要部分)

代码语言:javascript
复制
'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'thedatabasename'),
        'username' => env('DB_USERNAME', 'theusername'),
        'password' => env('DB_PASSWORD', 'thepassword'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
    ],

数据库名是正确的。表存在,所有字段也存在。提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2019-09-10 18:26:13

正如@PalakJadav正确指出的那样,远程.env文件中的.env应该更改为远程数据库服务器的远程IP或主机名。还请与数据库服务提供者检查其他参数是否正确。

对.env文件进行更改后,通过安全外壳输入远程服务器。在远程服务器根目录中,运行php artisan命令重新加载您的laravel配置。

代码语言:javascript
复制
 php artisan config:cache

清除旧缓存配置

代码语言:javascript
复制
 php artisan config:clear

最后,清除应用程序缓存。

代码语言:javascript
复制
 php artisan cache:clear

现在可以重试mysql查询。

更新

此外,当您首次将应用程序放到网上时,请记住迁移您的表。

代码语言:javascript
复制
php artisan migrate
票数 0
EN

Stack Overflow用户

发布于 2019-09-11 12:19:10

我面临的问题是我的mysql user没有正确的权限。

最后,我将其更改为使用root登录到mysql

确保将GRANT ALL ON laravel_database.* TO 'laravel_user'@'localhost';设置为与您一起登录的用户。

拼写是非常重要的!,因为我只有一个错误,这让我沮丧了好几天。

票数 0
EN

Stack Overflow用户

发布于 2022-03-21 11:06:09

这是因为您对远程DB的远程访问不可用,为此,请打开您的终端并运行这些命令。

代码语言:javascript
复制
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

. . .
bind-address            = 127.0.0.1
. . .

默认情况下,此值设置为127.0.0.1,这意味着服务器将只查找本地连接。您需要更改此指令以引用外部IP地址。为了排除故障,可以将此指令设置为通配符IP地址,即*、::或0.0.0.0:

更新你的。。。绑定-地址= 0.0.0.0。。。运行sudo systemctl重新启动mysql

代码语言:javascript
复制
mysql -u username -p
RENAME USER 'sammy'@'localhost' TO 'sammy'@'remote_server_ip';
CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED BY 'password';
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'remote_server_ip' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
sudo ufw allow from remote_IP_address to any port 3306
sudo ufw allow 3306

这会解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57874485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档