It seems most access issues have been remote, but this is the reverse problem.
Here are all the error messages:
PHP Warning: mysqli::mysqli(): (28000/1045): Access denied for user 'root'#'10.168.101.35 (using password: YES) in /var/www/html/hamlookup/index.php on line 291
PHP Warning: main(): Couldn't fetch mysqli in /var/www/html/hamlookup/index.php on line 291
PHP Fatal error: Call to undefined method mysqli::fetch_fields() in /var/www/html/hamlookup/index.php on line 295
I have setup MariaDB on CentOS 7 with password and I can remotely access it from various Windows machines using any SQL client (php or apache not involved).
I can also access it using the mysql command line tool.
mysqli is enabled in php (I checked with phpinfo()).
However, I get these errors when I check my web page running "php index.php" at the console, and of course when the web page is accessed via apache it crashes there too.
The lines causing the error are (line numbers in square brackets):
[290] $mysqli = new mysqli( "10.168.101.35","root","*****","hamlookup" );
[291] if( $mysqli->error ){
[292] [calling error function here then exit]
[293] }
[294] $result = "SELECT * FROM mytable";
[295] $fieldinfo = $mysqli->fetch_fields( $result );
It seems like it's an issue between php, mysql and apache but I can't figure it out.
I have also tried to connect via PDO and I still cannot connect to the server.
This is ridiculous since I can connect via CLI and via the network, simply php is not able to access the database.
you need add the line in file /etc/my.cnf
[mysqld]
bind-address = 0.0.0.0
restart mysql
Problem solved...
I was checking $myDPO->errorInfo() to verify success incorrectly.
This was migrated from the old mysql_*** access API and it turns out that in fact I was accessing the database.
Once the errorInfo() check was changed, it seems like everything is working.
Sorry for the bandwidth.
Related
The website works fine for a while but in a few days returns this error :
A PHP Error was encountered
Severity: Warning
Message: mysqli::real_connect(): (HY000/2002): Can't connect to local
MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
Filename: mysqli/mysqli_driver.php
Line Number: 202
Backtrace:
File: /var/www/html/application/controllers/Login.php Line: 8
Function: database
File: /var/www/html/index.php Line: 289 Function: require_once
A Database Error Occurred
Unable to connect to your database server using the provided settings.
Filename: core/CodeIgniter.php
Line Number: 500
Help will be appreciated
Thanks
Nipun
Three things possible. Your database has been shut down (or it has died). You have not setup database to use a unix socket when both client and server are on the same machine. Or socket is not readable and writable by web user.
The warning is being thrown by mysqli driver. I would recommend that you use PDO driver to connect to the Database.It's simpler and a bit universal (You don't need to change Database settings once you change the DB)
you need confirm the database config file:application/config/database.php ensure the confirm item is correct
Please check your mysql server connectivity
If you run the app using your pc name i.e.
sahil-pc/recruitement or http://85.215.963.104:81/recruitement
you need to define it in index.php of root.
please check the permission of your db socket if you are using linux you need to make it in read and write mod.
note: ip details are fake don't try it
I'm running Moodle on PHP 5.5.7 64bit nts on Windows Server 2008 R2 with MySQL 5.5.36.
Up until two days ago, there were no problems. To deal with Xdebugger being such a memory hog, an extra CPU and more memory was assigned to the virtual machine. The Windows license was also activated. The entire vm was rebooted. (I had restarted the machine before prior to this, with no problems).
I am now receiving the following warning when I access any page on the site:
PHP Warning: mysqli::mysqli(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
in C:\inetpub\wwwroot\moodle\lib\dml\mysqli_native_moodle_database.php on line 375
I created a test php page that simply consists of the following:
$mysqli = new mysqli("127.0.0.1", "moodleuser", 'xxxx', "moodle", 3306);
if ($result = $mysqli->query("SELECT * from mdl_user limit 10")) {
echo "Select returned $result->num_rows";
} else {
echo "Error";
}
$mysqli->close();
I receive the following output:
PHP Warning: mysqli::mysqli(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.in C:\inetpub\wwwroot\moodle\info.php on line 17
PHP Warning: mysqli::query(): Couldn't fetch mysqli in C:\inetpub\wwwroot\moodle\info.php on line 18
PHP Warning: mysqli::close(): Couldn't fetch mysqli in C:\inetpub\wwwroot\moodle\info.php on line 24
I have checked that "127.0.0.1 localhost" exists in my hosts file and that the IPv6 "::1" line has been commented out.
I have also attempted to use "localhost" but same problem.
The bizarre thing is that if I refresh the page, occasionally, and completely at random, the warning doesn't occur and the correct output is given.
I have attempted to disable the warnings, but php appears to be ignoring me. Also, disabling the warning is not exactly ideal.
Any ideas?
EDIT:
So after much pain staking back and forths between PHP and MySQL and IIS, it looks like (once again) it was php.ini to blame.
To be honest, I cant even tell you which setting was the problem - but I changed all possible timeout related settings in php.ini to a large number (10000 or -1 depending on the setting), as well as the connection_timeout for mysql in my.ini.
I am still yet to figure out which one was causing the problem, but will edit this post if I ever do.
So after much pain staking back and forths between PHP and MySQL and IIS, it looks like (once again) it was php.ini to blame.
To be honest, I cant even tell you which setting was the problem - but I changed all possible timeout related settings in php.ini to a large number (10000 or -1 depending on the setting), as well as the connection_timeout for mysql in my.ini.
I am still yet to figure out which one was causing the problem, but will edit this post if I ever do.
I have googled this to the edge of my ability and the current results don't seem to apply to me.
A couple days ago, the admin made some changes to the system, and the script I had to run nightly stopped working. When I would attempt to run the script I would get the following:
PHP Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Path/UpdateDB.php on line 2
PHP Warning: mysql_connect(): No such file or directory in /Path/UpdateDB.php on line 2
PHP Warning: mysql_select_db(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Path/UpdateDB.php on line 3
PHP Warning: mysql_select_db(): No such file or directory in /Path/UpdateDB.php on line 3
PHP Warning: mysql_select_db(): A link to the server could not be established in /Path/UpdateDB.php on line 3
No connection.
I contacted the admin and she said that she made some changes. When I ran that script this morning I just got the failure messages that I set up that are giving me this error:
MySQL error Data truncated for column 'GameID' at row 1
Now I checked all the other that were talking about the tables being strict and having my data be too large, but GameID is an int and the largest value that I have is 1737690.
At one point I set the failure to echo my statement, and then manually tried to run that in phpmyadmin and it worked. So that makes me believe it's something with the path it's trying to use.
EDIT: This is the email from the admin:
Some updates were done last break. OSX has php installed at /usr/bin/php. We installed a local php at /usr/local/bin/php and configured it to work with mysql. You you need to ensure you use php at /usr/local/bin/php.
I have restored your crontab file. I also added a MAILTO and PATH. All are commented out for now. If you uncomment the UpdateDB.php you should also uncomment the MAILTO and PATH. MAILTO will send any output to your email address. PATH will ensure that /usr/local/bin/php is used instead of /usr/bin/php.
#MAILTO=evan.lepolt#gmail.com
#PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/mysql/bin
#0 * * * * cd ~/Path; php UpdateDB.php;
I have updated the PATH you get when you SSH to ucfilespace.uc.edu. So it now has /usr/local/bin first so /usr/local/bin/php will be used instead of /usr/bin/php if you use php command.
/usr/local/bin/php has the mysql socket defined as /tmp/mysql.sock. So you script should now work via cron and at command line also.
I have a LAMP website (PHP/MySQL), and I rely heavily on my MySQL database.
Recently, the following error started occurring intermittently:
[30-Oct-2011 16:11:49] PHP Warning: mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2013): Lost connection to MySQL server at 'sending authentication information', system error: 32 in /home/path/to/my/code.php on line 1029
This is line 1029, the specific line that occasionally gives the above error:
$db = mysqli_connect($cfg['db_location'], $cfg['db_reader_username'], $cfg['db_reader_password']);
where $cfg['db_location'] is "localhost", and the username and password are correct.
It appears as though something is causing my PHP script to intermittently lose connection to the MySQL server, which is puzzling to me because all of my MySQL connections are made to localhost. That is, the PHP script and the MySQL server are both running on the same box, and I connect to MySQL via localhost.
Additionally, this is puzzling because my PHP script is able to successfully connect to the MySQL server for perhaps 90% of pages.
As best I can tell, my server has plenty of available RAM and CPU:
top - 16:38:23 up 173 days, 19:19, 2 users, load average: 0.57, 0.78, 0.84
Tasks: 142 total, 4 running, 137 sleeping, 0 stopped, 1 zombie
Cpu(s): 18.7%us, 27.5%sy, 0.7%ni, 52.6%id, 0.2%wa, 0.1%hi, 0.2%si, 0.0%st
Mem: 2976260k total, 1861368k used, 1114892k free, 532628k buffers
Swap: 2048248k total, 116k used, 2048132k free, 1035804k cached
And plenty of available disk space. When I run df -h, all of my filesystems are at most 25% in use.
So I don't know what would be causing the sporadic errors that I'm seeing in my PHP error logs.
Any ideas what might be causing my PHP script to intermittently lose connection to my MySQL server on localhost?
I upgraded to MySQL 5.1, and this is now what get when I run mysql -V:
mysql Ver 14.14 Distrib 5.1.56, for pc-linux-gnu (i686) using readline 5.1
The same errors are still happening, though:
[30-Oct-2011 20:26:18] PHP Warning: mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2013): Lost connection to MySQL server at 'sending authentication information', system error: 32 in /home/path/to/my/code.php on line 1029
As before, the errors continue to be intermittent.
After I upgraded to MySQL 5.1, I've been looking carefully at my PHP errors logs. I've noticed a few other errors similar to the first one. For example, here's one such error:
[30-Oct-2011 22:42:29] PHP Warning: mysqli_connect() [<a href='function.mysqli-connect'>function.mysqli-connect</a>]: (HY000/2013): Lost connection to MySQL server at 'reading authorization packet', system error: 104 in /home/path/to/my/code.php on line 1029
And here's another error I've seen in my logs:
PHP Warning: mysqli::mysqli() [<a href='mysqli.mysqli'>mysqli.mysqli</a>]: (HY000/2002): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/path/to/different/code.php on line 7
In all cases, the problem fundamentally seems to be a failure to connect to MySQL. Any ideas what might be causing this or how I could debug it?
Perhaps this bug report will help - It seems that a fix may be to set a higher timeout for the global connect_timeout. It was set to a higher value in later versions of MySQL 5.1 (10 seconds) as opposed to 5 seconds for earlier versions.
http://bugs.mysql.com/bug.php?id=28359
This question already has an answer here:
Connect DATABASE Error TYPE: 2002: Permission denied
(1 answer)
Closed 3 years ago.
Im using PHP MySQLi to connect to MySQL and sometimes doing query i get error:
"Permission denied" error code: 2002.
The strange thing is that it happens for different query's and totally unpredictable. For example it might happen on third query after first two executed correctly.
I know it is not problem with MySQL because i moved it from one server to another and problem still persists. Most likely problem with PHP or interconnection between PHP and MySQL servers (they're on different machines)
Anyone got ideas?
EDIT:
query what gets "Permission denied" works if i restart script - its not permissions problem
ERROR:
[23-Apr-2011 19:00:02] PHP Warning:
mysqli::mysqli() [mysqli.mysqli]:
[2002] Permission denied (trying to
connect via
tcp://xxx.xxx.xxx.xxx:3306) in
/home/.../DB.php on line 19
[23-Apr-2011 19:00:02] PHP Warning:
mysqli::mysqli() [mysqli.mysqli]:
(HY000/2002): Permission denied in
/home/.../DB.php on line 19
Same things happened on my environment. And the cause was SELinux.
You might be able to connect the database by executing php from command line
while you might not by executing on the web server.
In my case, I turned off SELinux.
# setenforce 0
Or you have to set up SELinux correctly.
I think the database user do not have sufficient permission to make particular operation on particular mysql table.
This isn't a permissions error. The client isn't able to get as far as connecting to the database, let alone trying to authenticate the user.
I suspect these problems will be being caused by either network problems (preventing the client/server machines from talking to each other) or the MySQL server process not running on the remote host.
The error code is documented here: http://dev.mysql.com/doc/refman/5.5/en/can-not-connect-to-server.html
Check The Permissions for the user that you are connected through