Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQLSTATE[HY000] [2002] Permission denied

I am getting this error don't know the reason SQLSTATE[HY000] [2002] Permission denied and here is the website on which i am tryiing to upload my file example.com.

like image 717
Ayyan Alvi Avatar asked Jan 08 '16 09:01

Ayyan Alvi


2 Answers

This happens because selinux avoids db connections from the httpd server to the remote db server. To solve it you need to access your server through ssh or just open a console if you have pretencial access and do the following:

You must check in the SELinux if port 80 is managed in. You can check it by typing # semanage port -l | grep http_port_t for a list and check:

http_port_t tcp 443, 488, 8008, 8009, 8443, 9000

If you need to add the required port, just type:

# semanage port -a -t http_port_t -p tcp 80

Type the command to ckeck once again:

# semanage port -l | grep http_port_t

.

http_port_t tcp 80, 443, 488, 8008, 8009, 8443, 9000

Then you should notify SELinux you want to allow network connections from the httpd server to the db remote server, setting the boolean variables that set it:

  1. Down the httpd service # service httpd stop
  2. # setsebool httpd_can_network_connect 1
  3. # setsebool httpd_can_network_connect_db 1
  4. Up the httpd service # service httpd start

Now your httpd service should be capable to get data from the db server.

These changes wont remain after a reboot. To make them permanent, instead do the following:

  1. Down the httpd service # service httpd stop
  2. # setsebool -P httpd_can_network_connect 1
  3. # setsebool -P httpd_can_network_connect_db 1
  4. Up the httpd service # service httpd start

The difference is the "-P" flag.

I hope that can be useful for the gang that searches solve errors like this.

like image 84
Drumsman Avatar answered Sep 19 '22 02:09

Drumsman


Go in .env file and change DB_HOST=127.0.0.1 to DB_HOST=localhost

like image 36
Hervera Avatar answered Sep 19 '22 02:09

Hervera