在本地环境中,将数据插入数据库工作。但是,在我的远程服务器上,它不工作。
我已经更改了远程.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、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 (将一些值替换为默认值,以保护隐私)。
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 (重要部分)
'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,
],数据库名是正确的。表存在,所有字段也存在。提前谢谢。
发布于 2019-09-10 18:26:13
正如@PalakJadav正确指出的那样,远程.env文件中的.env应该更改为远程数据库服务器的远程IP或主机名。还请与数据库服务提供者检查其他参数是否正确。
对.env文件进行更改后,通过安全外壳输入远程服务器。在远程服务器根目录中,运行php artisan命令重新加载您的laravel配置。
php artisan config:cache清除旧缓存配置
php artisan config:clear最后,清除应用程序缓存。
php artisan cache:clear现在可以重试mysql查询。
更新
此外,当您首次将应用程序放到网上时,请记住迁移您的表。
php artisan migrate发布于 2019-09-11 12:19:10
我面临的问题是我的mysql user没有正确的权限。
最后,我将其更改为使用root登录到mysql
确保将GRANT ALL ON laravel_database.* TO 'laravel_user'@'localhost';设置为与您一起登录的用户。
拼写是非常重要的!,因为我只有一个错误,这让我沮丧了好几天。
发布于 2022-03-21 11:06:09
这是因为您对远程DB的远程访问不可用,为此,请打开您的终端并运行这些命令。
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
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这会解决你的问题。
https://stackoverflow.com/questions/57874485
复制相似问题